7-22 修改例11-4的拼图程序,使之在难度菜单的相应选项前打钩。 程 序:
首先在框架窗口类的消息响应函数声明处增加以下消息响应函数的声明: afx_msg void
CPuzzleWnd::OnUpdateGrad01(CCmdUI*
pCmdUI); afx_msg void
CPuzzleWnd::OnUpdateGrad02(CCmdUI*
pCmdUI); afx_msg void
CPuzzleWnd::OnUpdateGrad03(CCmdUI*
pCmdUI);
然后在框架窗口类的消息映射宏中加入相应内容: BEGIN_MESSAGE_MAP(CPuzzleWnd, CFrameWnd) ON_WM_LBUTTONDOWN() ON_WM_LBUTTONUP() ON_WM_MOUSEMOVE() ON_WM_PAINT()
ON_COMMAND(ID_SHOWFIG, OnShowFig) ON_COMMAND(ID_GRAD01, OnGrad01) ON_COMMAND(ID_GRAD02, OnGrad02) ON_COMMAND(ID_GRAD03, OnGrad03)
ON_UPDATE_COMMAND_UI(ID_GRAD01, OnUpdateGrad01) ON_UPDATE_COMMAND_UI(ID_GRAD02, OnUpdateGrad02) ON_UPDATE_COMMAND_UI(ID_GRAD03, OnUpdateGrad03) END_MESSAGE_MAP()
注意更新命令用户接口消息映射宏将菜单标识符与相应的消息映射函数联系在一起。最后编写相应的更新命令用户接口消息映射函数:
void CPuzzleWnd::OnUpdateGrad01(CCmdUI* pCmdUI) {
pCmdUI->SetCheck(m_nColCount == 4); }
void CPuzzleWnd::OnUpdateGrad02(CCmdUI* pCmdUI) {
pCmdUI->SetCheck(m_nColCount == 8); }
void CPuzzleWnd::OnUpdateGrad03(CCmdUI* pCmdUI) {
pCmdUI->SetCheck(m_nColCount == 16); }
输入输出:在选择拼图难度时,可在相应选项前打钩(图13-4)。
// Example 13-7: 七巧板程序
////////////////////////////////// #include
拼
板
类
//////////////////////////////////////////////////// #define MAX_POINTS 4 #define CHIP_WIDTH 240 #define DELTA 30
class CChip : public CObject {
DECLARE_SERIAL(CChip) int m_nType;
CPoint m_pointList[MAX_POINTS]; int m_nPointCount; public: CChip(){}
void SetChip(int type, POINT *ppointlist, int count); void DrawChip(CDC *pDC); BOOL PtInChip(POINT point); LPCRECT GetRect();
void MoveTo(CSize offset); void Rotat