第一步:消息宏定义
//User-definedMicro
#defineWM_MYMSGWM_USER+8
可包含在stdafx.h中或者对话框类的头文件中,至于为什么是WM_开头和WM_USER+可另行参阅其它资料
第二步:绑定消息响应函数
BEGIN_MESSAGE_MAP(CHelloWorld_1028Dlg,CDialogEx)
ON_WM_SYSCOMMAND()
ON_WM_PAINT()
ON_WM_QUERYDRAGICON()
ON_BN_CLICKED(IDBTNOK, &CHelloWorld_1028Dlg::OnBnClickedOk)
ON_BN_CLICKED(IDBTNCANCEL, &CHelloWorld_1028Dlg::OnClickedIdbtncancel)
ON_MESSAGE(WM_MYMSG, &CHelloWorld_1028Dlg::OnMymsg)
END_MESSAGE_MAP()
关于BEGIN_MESSAGE_MAP和END_MESSAGE_MAP还有DECLARE_MESSAGE_MAP宏定义的奥妙之处,尽可再自己琢磨或者参阅网上资料
第三步:实现消息响应函数
afx_msgLRESULTOnMymsg(WPARAMwParam,LPARAM lParam);
LRESULTCHelloWorld_1028Dlg::OnMymsg(WPARAMwParam,LPARAM lParam)
{
CStringstr,str2;
str="收到自定义消息 ";
BSTR b = (BSTR)lParam;
CStrings;
s.Format(_T("%d"),lParam+wParam);
MessageBox(str,s,MB_OKCANCEL);
return 0;
}
第四步:发消息
voidCAboutDlg::OnBnClickedOk()
{
GetParent()->SendMessage(WM_MYMSG,2,3);
}
关于传递参数的详细用法尚待进一步考证