我们举一个实际的例子来说明该段过程.例如在对话框中设置一个按钮,每隔3秒钟会自动的弹出Message对话框:
(1)首先在头文件或CPP文件中定义一个消息
#define CLICK_MESSAGE_BOX WM_USER+100
|
(2)然后在消息映射宏里面添加函数声明:
//{{AFX_MSG(CMy41Dlg)
virtualBOOL OnInitDialog();
afx_msg voidOnSysCommand(UINT nID, LPARAM lParam);
afx_msg voidOnPaint();
afx_msg HCURSOR OnQueryDragIcon();
afx_msg voidOnButton1();
afx_msg voidOnTimer(UINT nIDEvent);
//}}AFX_MSG
DECLARE_MESSAGE_MAP()
afx_msg void OnResponse(intnum);//添加到此处
我们一般将自定义的消息卸载AFX_MSG的外面
(3)在CPP文件里面将消息和消息响应函数链接:
BEGIN_MESSAGE_MAP(CMy41Dlg, CDialog)
//{{AFX_MSG_MAP(CMy41Dlg)
ON_WM_SYSCOMMAND()
ON_WM_PAINT()
ON_WM_QUERYDRAGICON()
ON_BN_CLICKED(IDC_BUTTON1, OnButton1)
ON_WM_TIMER()
ON_MESSAGE (CLICK_MESSAGE_BOX,OnResponse)// 这里
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
(4)定义响应函数
(5)发送消息:
PostMessage(CLICK_MESSAGE_BOX,1);
|
需要注意的是,PostMessage函数后面带有参数,可以向响应函数里面传参,例如上面的例子中,我们在(5)的消息函数中有一个int num,其实就是postMessage函数传过来的参数1。
参考 http://www.cnblogs.com/CBDoctor/archive/2012/05/16/2504073.html