?? 24diandlg.cpp
字號:
for(int i=0; i<4; i++)
{
CRect rc(m_rcExpCardPos[i].left-15,
m_rcExpCardPos[i].top-15,
m_rcExpCardPos[i].left+15,
m_rcExpCardPos[i].top+15);
if(rc.PtInRect(CPoint(m_rcCardPos[nIndex].left, m_rcCardPos[nIndex].top)))
{
m_rcCardPos[nIndex]=m_rcExpCardPos[i];
CRect tmprc = m_rcCardPos[nIndex];
tmprc.InflateRect(15, 15);
InvalidateRect(tmprc,FALSE);
GetExp();
return;
}
}
}
if(m_nCapturedOp >= 0)
{
for(int i=0; i<9; i++)
{
CRect rc(m_rcExpOpPos[i].left-15,
m_rcExpOpPos[i].top-15,
m_rcExpOpPos[i].left+15,
m_rcExpOpPos[i].top+15);
if(rc.PtInRect(CPoint(m_rcOpPos[nIndex].left,m_rcOpPos[nIndex].top)))
{
m_rcOpPos[nIndex]=m_rcExpOpPos[i];
CRect tmprc = m_rcOpPos[nIndex];
tmprc.InflateRect(15, 15);
InvalidateRect(tmprc,FALSE);
GetExp();
return;
}
}
}
GetExp();
}
void CMy24DianDlg::GetExp()
{
CString strExpCard[4];
CString strExpOp[9];
CString strNum[4];
strNum[0]=m_strNum1;
strNum[1]=m_strNum2;
strNum[2]=m_strNum3;
strNum[3]=m_strNum4;
for(int i=0; i<4; i++)
{
for(int j=1; j<5; j++)
{
CRect rc(m_rcCardPos[j].CenterPoint().x-15,
m_rcCardPos[j].CenterPoint().y-15,
m_rcCardPos[j].CenterPoint().x+15,
m_rcCardPos[j].CenterPoint().y+15);
if(rc.PtInRect(m_rcExpCardPos[i].CenterPoint()))
{
if(!m_bIsEnter)
strExpCard[i].Format("%.0f", m_dNum[j-1]);
else
strExpCard[i]=strNum[j-1];
break;
}
else
strExpCard[i]="";
}
}
for(i=0; i<9; i++)
{
for(int j=0; j<21; j++)
{
CRect rc(m_rcExpOpPos[i].CenterPoint().x-4,
m_rcExpOpPos[i].CenterPoint().y-4,
m_rcExpOpPos[i].CenterPoint().x+4,
m_rcExpOpPos[i].CenterPoint().y+4);
if(rc.PtInRect(m_rcOpPos[j].CenterPoint()))
{
switch(j/3)
{
case 0:
strExpOp[i]="+";
break;
case 1:
strExpOp[i]="-";
break;
case 2:
strExpOp[i]="×";
break;
case 3:
strExpOp[i]="÷";
break;
case 4:
strExpOp[i]="(";
break;
case 5:
strExpOp[i]=")";
break;
case 6:
strExpOp[i]="^";
break;
}
break;
}
else
strExpOp[i]="";
}
}
m_strAnswer="";
m_strAnswer+=strExpOp[0];
m_strAnswer+=strExpCard[0];
m_strAnswer+=strExpOp[1];
m_strAnswer+=strExpOp[2];
m_strAnswer+=strExpCard[1];
m_strAnswer+=strExpOp[3];
m_strAnswer+=strExpOp[4];
m_strAnswer+=strExpOp[5];
m_strAnswer+=strExpCard[2];
m_strAnswer+=strExpOp[6];
m_strAnswer+=strExpOp[7];
m_strAnswer+=strExpCard[3];
m_strAnswer+=strExpOp[8];
m_ctlEditAnswer.SetWindowText(m_strAnswer);
// UpdateData(FALSE);
}
void CMy24DianDlg::DrawExpPos(CDC *pDC)
{
CBrush* pOldBrush=(CBrush*)pDC->SelectStockObject(NULL_BRUSH);
CPen pen(PS_SOLID, 2, RGB(255, 0, 0));
CPen* pOldPen=pDC->SelectObject(&pen);
for(int i=0; i<4; i++)
{
CRect rc=m_rcExpCardPos[i];
rc.InflateRect(0,0,2,2);
pDC->Rectangle(rc);
}
for(i=0; i<9; i++)
{
CRect rc=m_rcExpOpPos[i];
rc.InflateRect(0,0,3,3);
pDC->Rectangle(rc);
}
for(i=0; i<7; i++)
{
pDC->SelectObject(pOldPen);
CPen penGreen(PS_SOLID, 2, RGB(0,255,64));
pOldPen=pDC->SelectObject(&penGreen);
CRect rc;
CStatic *pStatic=(CStatic*)GetDlgItem(IDC_OP_ADD+i);
pStatic->GetWindowRect(rc);
ScreenToClient(rc);
rc.InflateRect(0,0,3,3);
pDC->Rectangle(rc);
}
pDC->SelectObject(pOldBrush);
pDC->SelectObject(pOldPen);
}
void CMy24DianDlg::SetAnswerList()
{
LOGFONT logFont;
/* 屏幕dc初始化*/
HDC screenDC;
int colorBits, xRes, yRes;
screenDC = CreateDC("DISPLAY", NULL, NULL,NULL);
/* 檢索設備 */
colorBits = GetDeviceCaps(screenDC, BITSPIXEL);
xRes = GetDeviceCaps(screenDC, HORZRES);
yRes = GetDeviceCaps(screenDC, VERTRES);
/* 清除 */
DeleteDC(screenDC);
int nResponse = IDOK;
if(xRes==1024 && yRes==768)
{
logFont.lfHeight=25;
}
else
{
logFont.lfHeight=20;
}
logFont.lfWidth=0;
logFont.lfWeight=FW_NORMAL;
logFont.lfEscapement=0;
logFont.lfOrientation=0;
logFont.lfItalic=FALSE;
logFont.lfStrikeOut=FALSE;
logFont.lfUnderline=FALSE;
logFont.lfCharSet=ANSI_CHARSET;
logFont.lfQuality=DEFAULT_QUALITY;
logFont.lfOutPrecision=OUT_CHARACTER_PRECIS;
logFont.lfClipPrecision=CLIP_DEFAULT_PRECIS;
logFont.lfPitchAndFamily=DEFAULT_PITCH | FF_SWISS;
strcpy(logFont.lfFaceName,"宋體");
m_ctlEditAnswerList.SetColor(RGB(0,0,255));
m_ctlEditAnswerList.SetFont(logFont);
}
void CMy24DianDlg::DrawNum(CDC *pDC)
{
LOGFONT logFont;
logFont.lfHeight=40;
logFont.lfWidth=20;
logFont.lfWeight=FW_NORMAL;
logFont.lfEscapement=0;
logFont.lfOrientation=0;
logFont.lfItalic=FALSE;
logFont.lfStrikeOut=FALSE;
logFont.lfUnderline=FALSE;
logFont.lfCharSet=ANSI_CHARSET;
logFont.lfQuality=DEFAULT_QUALITY;
logFont.lfOutPrecision=OUT_CHARACTER_PRECIS;
logFont.lfClipPrecision=CLIP_DEFAULT_PRECIS;
logFont.lfPitchAndFamily=DEFAULT_PITCH | FF_SWISS;
strcpy(logFont.lfFaceName,"宋體");
CFont font;
font.CreateFontIndirect(&logFont);
CFont *pOldFont=pDC->SelectObject(&font);
UpdateData();
CString strNum[4];
strNum[0]=m_strNum1;
strNum[1]=m_strNum2;
strNum[2]=m_strNum3;
strNum[3]=m_strNum4;
int nMode=pDC->SetBkMode(TRANSPARENT);
COLORREF oldColor=pDC->SetTextColor(RGB(255, 0, 0));
CPen pen(PS_SOLID, 1, RGB(255, 255, 0));
CPen *pOldPen=pDC->SelectObject(&pen);
for(int i=0; i<4; i++)
{
if(atoi(strNum[i]) < 1 || atoi(strNum[i]) > 13)
{
CRect rc=m_rcCardPos[i+1];
rc.top=rc.top+rc.Height()/3;
pDC->Rectangle(m_rcCardPos[i+1]);
// pDC->FillRect(, &CBrush(RGB(255, 255, 255)));
pDC->DrawText(strNum[i],rc, DT_CENTER);
}
else
{
//m_bmpCard[1].LoadFromFile("bmp\\"+m_CarInfo[
m_bmpCard[i+1].Draw(*pDC,&m_rcCardPos[i+1]);
}
}
pDC->SelectObject(pOldPen);
pDC->SelectObject(pOldFont);
pDC->SetTextColor(oldColor);
pDC->SetBkMode(nMode);
GetExp();
}
void CMy24DianDlg::OnSelchangeComboNum1()
{
// TODO: Add your control notification handler code here
InvalidateRect(m_rcCardPos[1],FALSE);
m_strAnswerList="";
m_nAnswerIndex=0;
CComboBox *pCombo=(CComboBox*)GetDlgItem(IDC_COMBO_NUM1);
CString strNum;
int nSel = pCombo->GetCurSel();
pCombo->GetLBText(nSel, strNum);
if(atoi(strNum) < 1 || atoi(strNum) >13)
return;
if(!m_bmpCard[1].LoadFromFile("bmp\\"+m_CardInfo[nSel].m_strFileName))
AfxMessageBox("Can not load bmp:"+m_CardInfo[nSel].m_strFileName);
}
void CMy24DianDlg::OnEditchangeComboNum1()
{
// TODO: Add your control notification handler code here
InvalidateRect(m_rcCardPos[1],FALSE);
m_strAnswerList="";
m_nAnswerIndex=0;
CComboBox *pCombo=(CComboBox*)GetDlgItem(IDC_COMBO_NUM1);
CString strNum;
pCombo->GetWindowText(strNum);
if(atoi(strNum) < 1 || atoi(strNum) >13)
return;
if(!m_bmpCard[1].LoadFromFile("bmp\\"+m_CardInfo[atoi(strNum)-1].m_strFileName))
AfxMessageBox("Can not load bmp:"+m_CardInfo[atoi(strNum)-1].m_strFileName);
}
void CMy24DianDlg::OnEditchangeComboNum2()
{
// TODO: Add your control notification handler code here
InvalidateRect(m_rcCardPos[2],FALSE);
m_strAnswerList="";
m_nAnswerIndex=0;
CComboBox *pCombo=(CComboBox*)GetDlgItem(IDC_COMBO_NUM2);
CString strNum;
pCombo->GetWindowText(strNum);
if(atoi(strNum) < 1 || atoi(strNum) >13)
return;
if(!m_bmpCard[2].LoadFromFile("bmp\\"+m_CardInfo[13+atoi(strNum)-1].m_strFileName))
AfxMessageBox("Can not load bmp:"+m_CardInfo[13+atoi(strNum)-1].m_strFileName);
}
void CMy24DianDlg::OnSelchangeComboNum2()
{
// TODO: Add your control notification handler code here
InvalidateRect(m_rcCardPos[2],FALSE);
m_strAnswerList="";
m_nAnswerIndex=0;
CComboBox *pCombo=(CComboBox*)GetDlgItem(IDC_COMBO_NUM2);
CString strNum;
int nSel = pCombo->GetCurSel();
pCombo->GetLBText(nSel, strNum);
if(atoi(strNum) < 1 || atoi(strNum) >13)
return;
if(!m_bmpCard[2].LoadFromFile("bmp\\"+m_CardInfo[13+nSel].m_strFileName))
AfxMessageBox("Can not load bmp:"+m_CardInfo[13+nSel].m_strFileName);
}
void CMy24DianDlg::OnEditchangeComboNum3()
{
// TODO: Add your control notification handler code here
InvalidateRect(m_rcCardPos[3],FALSE);
m_strAnswerList="";
m_nAnswerIndex=0;
CComboBox *pCombo=(CComboBox*)GetDlgItem(IDC_COMBO_NUM3);
CString strNum;
pCombo->GetWindowText(strNum);
if(atoi(strNum) < 1 || atoi(strNum) >13)
return;
if(!m_bmpCard[3].LoadFromFile("bmp\\"+m_CardInfo[13*2+atoi(strNum)-1].m_strFileName))
AfxMessageBox("Can not load bmp:"+m_CardInfo[13*2+atoi(strNum)-1].m_strFileName);
}
void CMy24DianDlg::OnSelchangeComboNum3()
{
// TODO: Add your control notification handler code here
InvalidateRect(m_rcCardPos[3],FALSE);
m_strAnswerList="";
m_nAnswerIndex=0;
CComboBox *pCombo=(CComboBox*)GetDlgItem(IDC_COMBO_NUM3);
CString strNum;
int nSel = pCombo->GetCurSel();
pCombo->GetLBText(nSel, strNum);
if(atoi(strNum) < 1 || atoi(strNum) >13)
return;
if(!m_bmpCard[3].LoadFromFile("bmp\\"+m_CardInfo[13*2+nSel].m_strFileName))
AfxMessageBox("Can not load bmp:"+m_CardInfo[13*2+nSel].m_strFileName);
}
void CMy24DianDlg::OnEditchangeComboNum4()
{
// TODO: Add your control notification handler code here
InvalidateRect(m_rcCardPos[4],FALSE);
m_strAnswerList="";
m_nAnswerIndex=0;
CComboBox *pCombo=(CComboBox*)GetDlgItem(IDC_COMBO_NUM4);
CString strNum;
pCombo->GetWindowText(strNum);
if(atoi(strNum) < 1 || atoi(strNum) >13)
return;
if(!m_bmpCard[4].LoadFromFile("bmp\\"+m_CardInfo[13*3+atoi(strNum)-1].m_strFileName))
AfxMessageBox("Can not load bmp:"+m_CardInfo[13*3+atoi(strNum)-1].m_strFileName);
}
void CMy24DianDlg::OnSelchangeComboNum4()
{
// TODO: Add your control notification handler code here
InvalidateRect(m_rcCardPos[4],FALSE);
m_strAnswerList="";
m_nAnswerIndex=0;
CComboBox *pCombo=(CComboBox*)GetDlgItem(IDC_COMBO_NUM4);
CString strNum;
int nSel = pCombo->GetCurSel();
pCombo->GetLBText(nSel, strNum);
if(atoi(strNum) < 1 || atoi(strNum) >13)
return;
if(!m_bmpCard[4].LoadFromFile("bmp\\"+m_CardInfo[13*3+nSel].m_strFileName))
AfxMessageBox("Can not load bmp:"+m_CardInfo[13*3+nSel].m_strFileName);
}
void CMy24DianDlg::SetButtonEnabled()
{
CButton* pButton=(CButton*)GetDlgItem(IDC_BUTTON_ANSWER);
pButton->EnableWindow(TRUE);
pButton=(CButton*)GetDlgItem(IDC_BUTTON_NO_ANSWER);
pButton->EnableWindow(TRUE);
pButton=(CButton*)GetDlgItem(IDC_BUTTON_ALL_ANSWER);
pButton->EnableWindow(TRUE);
pButton=(CButton*)GetDlgItem(IDC_BUTTON_NEXT_ANSWER);
pButton->EnableWindow(TRUE);
}
void CMy24DianDlg::OnHelp()
{
// TODO: Add your command handler code here
/* TCHAR exeFullPath[MAX_PATH]; // MAX_PATH在API中定義了吧,好象是128
::GetModuleFileName(NULL,exeFullPath,MAX_PATH);
CString strCurPath(exeFullPath);
int nPos=strCurPath.ReverseFind('\\');
if(nPos!=-1)
strCurPath=strCurPath.Left(nPos);
::ShellExecute(NULL,NULL,_T("24Dian.chm"),NULL,strCurPath,SW_SHOWMAXIMIZED);*/
// if(result<=32)
// AfxMessageBox("Can not open help!");
CHelpDlg helpDlg;
helpDlg.DoModal();
}
void CMy24DianDlg::OnEditchangeComboResult()
{
// TODO: Add your control notification handler code here
m_strAnswerList="";
m_nAnswerIndex=0;
}
void CMy24DianDlg::OnSelchangeComboResult()
{
// TODO: Add your control notification handler code here
m_strAnswerList="";
m_nAnswerIndex=0;
}
void CMy24DianDlg::SetComboBox()
{
LOGFONT logFont;
logFont.lfHeight=20;
logFont.lfWidth=0;
logFont.lfWeight=FW_NORMAL;
logFont.lfEscapement=0;
logFont.lfOrientation=0;
logFont.lfItalic=FALSE;
logFont.lfStrikeOut=FALSE;
logFont.lfUnderline=FALSE;
logFont.lfCharSet=ANSI_CHARSET;
logFont.lfQuality=DEFAULT_QUALITY;
logFont.lfOutPrecision=OUT_CHARACTER_PRECIS;
logFont.lfClipPrecision=CLIP_DEFAULT_PRECIS;
logFont.lfPitchAndFamily=DEFAULT_PITCH | FF_SWISS;
// char name[32]="Times New Roman";Fixedsys
strcpy(logFont.lfFaceName,"宋體");
COLORREF color=RGB(255,0,0);
m_ctlComboResult.SetFont(logFont);
m_ctlComboResult.SetColor(color);
m_ctlComboNum1.SetFont(logFont);
m_ctlComboNum1.SetColor(color);
m_ctlComboNum2.SetFont(logFont);
m_ctlComboNum2.SetColor(color);
m_ctlComboNum3.SetFont(logFont);
m_ctlComboNum3.SetColor(color);
m_ctlComboNum4.SetFont(logFont);
m_ctlComboNum4.SetColor(color);
}
void CMy24DianDlg::DrawLabel(CDC *pDC)
{
LOGFONT logFont;
/* 屏幕dc初始化*/
HDC screenDC;
int colorBits, xRes, yRes;
screenDC = CreateDC("DISPLAY", NULL, NULL,NULL);
/* 檢索設備 */
colorBits = GetDeviceCaps(screenDC, BITSPIXEL);
xRes = GetDeviceCaps(screenDC, HORZRES);
yRes = GetDeviceCaps(screenDC, VERTRES);
/* 清除 */
DeleteDC(screenDC);
int nResponse = IDOK;
if(xRes==1024 && yRes==768)
{
logFont.lfHeight=25;
}
else
{
logFont.lfHeight=16;
}
logFont.lfWidth=0;
logFont.lfWeight=FW_NORMAL;
logFont.lfEscapement=0;
logFont.lfOrientation=0;
logFont.lfItalic=FALSE;
logFont.lfStrikeOut=FALSE;
logFont.lfUnderline=FALSE;
logFont.lfCharSet=ANSI_CHARSET;
logFont.lfQuality=DEFAULT_QUALITY;
logFont.lfOutPrecision=OUT_CHARACTER_PRECIS;
logFont.lfClipPrecision=CLIP_DEFAULT_PRECIS;
logFont.lfPitchAndFamily=DEFAULT_PITCH | FF_SWISS;
strcpy(logFont.lfFaceName,"宋體");
CFont font;
font.CreateFontIndirect(&logFont);
CFont *pOldFont=pDC->SelectObject(&font);
pDC->SetBkMode(TRANSPARENT);
COLORREF oldColor=pDC->SetTextColor(RGB(255, 255, 0));
CRect rc;
CStatic* pStatic=(CStatic*)GetDlgItem(IDC_LABEL_ENTER);
pStatic->GetWindowRect(&rc);
ScreenToClient(&rc);
pDC->DrawText("輸入解:", &rc, DT_CENTER);
pStatic=(CStatic*)GetDlgItem(IDC_LABEL_EQUAL);
pStatic->GetWindowRect(&rc);
ScreenToClient(&rc);
pDC->DrawText("=", &rc, DT_CENTER);
pDC->SetTextColor(oldColor);
pDC->SelectObject(pOldFont);
}
BOOL CAboutDlg::OnInitDialog()
{
CDialog::OnInitDialog();
// TODO: Add extra initialization here
m_CoLink.SetURL(_T("www.zjzes.com"));
m_CoLink.SetUnderline(TRUE);
m_AuthorMail.SetURL(_T("mailto:rnl@zjzes.com"));
m_AuthorMail.SetUnderline(TRUE);
return TRUE; // return TRUE unless you set the focus to a control
// EXCEPTION: OCX Property Pages should return FALSE
}
void CMy24DianDlg::InitEnterNum()
{
m_strNum1 = "1";
m_strNum2 = "1";
m_strNum3 = "1";
m_strNum4 = "1";
UpdateData(FALSE);
if(!m_bmpCard[1].LoadFromFile("bmp\\"+m_CardInfo[0].m_strFileName))
AfxMessageBox("Can not load bmp:"+m_CardInfo[0].m_strFileName);
if(!m_bmpCard[2].LoadFromFile("bmp\\"+m_CardInfo[13].m_strFileName))
AfxMessageBox("Can not load bmp:"+m_CardInfo[13].m_strFileName);
if(!m_bmpCard[3].LoadFromFile("bmp\\"+m_CardInfo[13*2].m_strFileName))
AfxMessageBox("Can not load bmp:"+m_CardInfo[13*2].m_strFileName);
if(!m_bmpCard[4].LoadFromFile("bmp\\"+m_CardInfo[13*3].m_strFileName))
AfxMessageBox("Can not load bmp:"+m_CardInfo[13*3].m_strFileName);
}
void CMy24DianDlg::OnUpdateStart(CCmdUI* pCmdUI)
{
// TODO: Add your command update UI handler code here
pCmdUI->SetCheck(!m_bIsEnter);
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -