VC++添加自定义消息

在MFC编程中,处理后台工作时需要开启一个工作者线程,工作者线程会通过消息发送当前处理状态等信息。因此需要自定义消息。下面简单说一下自定义消息的方法,不足之处希望指出。

步骤:

一、定义消息ID,一般是在用户允许的消息范围内定义
#define        WM_UPDATE_PROGRESS        (WM_USER+100)

二、声明消息处理函数
头文件中要有:DECLARE_MESSAGE_MAP()
声明函数:
afx_msg LRESULT    SetProgressText(WPARAM wparam,LPARAM lparam);

三、添加消息映射
在BEGIN_MESSAGE_MAP()和END_MESSAGE_MAP()之间添加映射
ON_MESSAGE(WM_UPDATE_PROGRESS,SetProgressText)

四、定义处理函数
LRESULT CPrinterDlg::SetProgressText(WPARAM wparam,LPARAM lparam)
{
    ........
    return 0;
}

五、线程中发送消息
PostMessage(WM_UPDATE_PROGRESS,NULL,NULL);
SendMessage(WM_UPDATE_PROGRESS,NULL,NULL);

顺便说下postmessage和sendmessage的区别:
前者投递消息立即返回;后者等待消息执行完成返回;更多信息可以查看MSDN。

你可能感兴趣的:(线程)