VC 中添加消息响应函数

我们举一个实际的例子来说明该段过程.例如在对话框中设置一个按钮,每隔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)定义响应函数

void CMy41Dlg::OnResponse(int num)
{
    CString str;
    str.Format("%d",num);
    MessageBox(str+"自定义的消息响应函数");
}


 (5)发送消息:


PostMessage(CLICK_MESSAGE_BOX,1);

 需要注意的是,PostMessage函数后面带有参数,可以向响应函数里面传参,例如上面的例子中,我们在(5)的消息函数中有一个int num,其实就是postMessage函数传过来的参数1。 

参考 http://www.cnblogs.com/CBDoctor/archive/2012/05/16/2504073.html


你可能感兴趣的:(VC 中添加消息响应函数)