自定义消息过程网上很多例子,自己添加一遍总结如下:
1、自定义消息:(刚开始在resource.h中定义,但是在编译的时候,总是WM_MY_MESSAGE没有定义,不解???)
在**Dlg.h中
#define WM_MY_MESSAGE WM_USER + 100
2、在类头文件的AFX_MSG块中说明消息处理函数
在...Dlg.h的文件添加如下:
//{{AFX_MSG(CPostmessageView)
afx_msg void Ontydspostmessage();
afx_msg /*LRESULT*/ void OnMyMessage(/*WPARAM wParam, LPARAM lParam*/); //用户添加 自定义消息函数说明
//}}AFX_MSG
DECLARE_MESSAGE_MAP()
3、自定义消息映射
在用户类的消息块中,使用ON_MESSAGE宏指令将消息映射到消息处理函数中
在...Dlg.cpp文件添加如下代码
BEGIN_MESSAGE_MAP(CPostmessageView, CView)
//{{AFX_MSG_MAP(CPostmessageView)
ON_COMMAND(ID_tyds_postmessage, Ontydspostmessage)
ON_MESSAGE(WM_MY_MESSAGE, OnMyMessage) //添加消息映射 用户添加
//}}AFX_MSG_MAP
// Standard printing commands
ON_COMMAND(ID_FILE_PRINT, CView::OnFilePrint)
ON_COMMAND(ID_FILE_PRINT_DIRECT, CView::OnFilePrint)
ON_COMMAND(ID_FILE_PRINT_PREVIEW, CView::OnFilePrintPreview)
END_MESSAGE_MAP()
4、自定义消息的实现
void CPostmessageDlg::Ontydspostmessage()
{
MessageBox("begin post message!");
//PostMessage(WM_MY_MESSAGE); //这里 PostMessage SendMessage 两则区别是
SendMessage(WM_MY_MESSAGE); //PostMessage 是发出去就返回 而SendMessage是发出去等到被执行了,再返回
}
消息相应函数
/*LPESULT*/void CPostmessageView::OnMyMessage(/*WPARAM wParam, LPARAM lParam*/) //注意这里 的参数可要可不要 根据自己来定 返回值也一样
{
MessageBox("post msg finished!");
// return 0;
}