6#include "ChineseChessMFC.h"
7#include "ChineseChessMFCDlg.h"
8#include "afxdialogex.h"
16CChineseChessMFCDlg::CChineseChessMFCDlg(CWnd* pParent )
17 : CDialogEx(IDD_CHINESECHESSMFC_DIALOG, pParent)
19 m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
23void CChineseChessMFCDlg::DoDataExchange(CDataExchange* pDX)
25 CDialogEx::DoDataExchange(pDX);
26 DDX_Control(pDX, IDC_NEXT, m_btNext);
27 DDX_Control(pDX, IDC_PREVIOU, m_btPreviou);
28 DDX_Control(pDX, IDC_SAVE, m_btSave);
29 DDX_Control(pDX, IDC_LOAD, m_btLoad);
48 CDialogEx::OnInitDialog();
53 ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX);
54 ASSERT(IDM_ABOUTBOX < 0xF000);
56 CMenu* pSysMenu = GetSystemMenu(FALSE);
57 if (pSysMenu !=
nullptr)
61 bNameValid = strAboutMenu.LoadString(IDS_ABOUTBOX);
63 if (!strAboutMenu.IsEmpty())
65 pSysMenu->AppendMenu(MF_SEPARATOR);
66 pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);
72 SetIcon(m_hIcon, TRUE);
73 SetIcon(m_hIcon, FALSE);
78 this->GetClientRect(rect);
80 m_pChess->Create(NULL, _T(
"Chinese chess"), WS_CHILD, rect,
this, IDW_CHESS);
81 m_pChess->ShowWindow(SW_SHOW);
82 ReSize(rect.Width(), rect.Height());
87void CChineseChessMFCDlg::OnSysCommand(UINT nID, LPARAM lParam)
89 if ((nID & 0xFFF0) == IDM_ABOUTBOX)
95 CDialogEx::OnSysCommand(nID, lParam);
103void CChineseChessMFCDlg::OnPaint()
109 SendMessage(WM_ICONERASEBKGND,
reinterpret_cast<WPARAM
>(dc.GetSafeHdc()), 0);
112 int cxIcon = GetSystemMetrics(SM_CXICON);
113 int cyIcon = GetSystemMetrics(SM_CYICON);
115 GetClientRect(&rect);
116 int x = (rect.Width() - cxIcon + 1) / 2;
117 int y = (rect.Height() - cyIcon + 1) / 2;
120 dc.DrawIcon(x, y, m_hIcon);
124 CDialogEx::OnPaint();
130HCURSOR CChineseChessMFCDlg::OnQueryDragIcon()
132 return static_cast<HCURSOR
>(m_hIcon);
135int CChineseChessMFCDlg::ReSize(
int cx,
int cy)
138 if (NULL == m_pChess || NULL == m_pChess->GetSafeHwnd())
141 if (!m_btNext.GetSafeHwnd())
144 m_btNext.GetWindowRect(&rect1);
145 m_btPreviou.GetWindowRect(&rect2);
146 int y = cy - max(rect1.Height(), rect2.Height()) - 5;
148 m_pChess->MoveWindow(0, 0, cx, y);
150 m_btNext.MoveWindow(cx - rect1.Width() - 5, y + 5, rect1.Width(), rect1.Height());
151 m_btPreviou.MoveWindow(cx - rect1.Width() - rect2.Width() - 5, y + 5, rect1.Width(), rect1.Height());
153 m_btLoad.GetWindowRect(&rect1);
154 m_btLoad.MoveWindow(0, y + 5, rect1.Width(), rect1.Height());
155 m_btSave.GetWindowRect(&rect2);
156 m_btSave.MoveWindow(rect1.Width() + 5, y + 5, rect2.Width(), rect2.Height());
160void CChineseChessMFCDlg::OnBnClickedPreviou()
165void CChineseChessMFCDlg::OnBnClickedNext()
170void CChineseChessMFCDlg::OnBnClickedSave()
173 CFileDialog dlg(FALSE);
174 if (dlg.DoModal() == IDOK)
176 szFile = dlg.GetPathName();
177 m_pChess->SaveChessGame(szFile);
181void CChineseChessMFCDlg::OnBnClickedLoad()
184 CFileDialog dlg(TRUE);
185 if (dlg.DoModal() == IDOK)
187 szFile = dlg.GetPathName();
188 m_pChess->LoadChessGame(szFile);
192void CChineseChessMFCDlg::OnSize(UINT nType,
int cx,
int cy)
194 CDialogEx::OnSize(nType, cx, cy);
int PreviouStep()
函数名:PreviouStep 功 能:上步棋 参 数:无 返回值:走棋步数 作 者:康 林 版 本:1.0.0.1 日 期:2004-10-5 时 间:10:19:51
int NextStep()
函数名:NextStep 功 能:下步棋 参 数:无 返回值:走棋步数 作 者:康 林 版 本:1.0.0.1 日 期:2004-10-5 时 间:10:19:33