C++和MFC学习笔记[第四日]
2011-06-30 17:20 ozslice798 阅读(121) 评论(0) 收藏 举报原本计划三天搞定,结果多花了一天,因为上午起床太晚了,明天争取7点半出门!!!
tutorial的最后一部分part4讲的是message map
1 class CButtonWindow : public CFrameWnd
2 {
3 CButton *button;
4 public:
5 CButtonWindow();
6 afx_msg void HandleButton();
7 afx_msg void OnSize(UINT, int, int);
8 afx_msg void OnTimer(UINT);
9 DECLARE_MESSAGE_MAP()
10 };
11 // A message handler function
12 void CButtonWindow::HandleButton()
13 {
14 MessageBeep(-1);
15 }
16 // A message handler function
17 void CButtonWindow::OnSize(UINT nType, int cx,
18 int cy)
19 {
20 CRect r;
21 GetClientRect(&r);
22 r.InflateRect(-20,-20);
23 button->MoveWindow(r);
24 }
25 // A message handler function
26 void CButtonWindow::OnTimer(UINT id)
27 {
28 MessageBeep(-1);
29 }
30 // The message map
31 BEGIN_MESSAGE_MAP(CButtonWindow, CFrameWnd)
32 ON_BN_CLICKED(IDB_BUTTON, HandleButton)
33 ON_WM_SIZE()
34 ON_WM_TIMER()
35 END_MESSAGE_MAP()
------------------------------
实验室老板来了,又被迫出去“陪客”了。。。
这个项目要做好,老板不说我也知道。
题外话就这么多。
消息传递学起来挺快的,我认为以下这几点需要掌握:
1.CbuttonWindow(CFrameWnd)增加了一个新的成员函数,一个消息映射。afx_msg HaddleButton, 一个句柄函数,必须返回void并且没有参数。DECLARE_MESSAGE_MAP宏用于声明消息映射。
2.BEGIN_MESSAGE_MAP宏需要两个输入参数,第一个是消息映射的class,第二个是前者的父类。ON_BT_CLICKED宏也需要两个输入参数,一个是ID,另一个是消息函数。最后,END_MESSAGE_MAP宏结束消息映射。
3.ON_WM_SIZE宏会调用函数OnSize。
文章最后,还讲了scroll bar control的使用,内容是类似的。
基础学习暂时告于段落,下面开始要做小玩意了。
浙公网安备 33010602011771号