消息对于windows程序来说,是一个非常重要的内容,也有非常多的消息,如果WM_CREATE、WM_LBUTTONDOWN等等。
实际开发时,除了系统定义的这些消息之外,也会使用到自定义消息,因此,记一小章使用方法。
它的声明如下 :
typedef struct tagMSG {
HWND hwnd;
UINT message;
WPARAM wParam;
LPARAM lParam;
DWORD time;
POINT pt;
#ifdef _MAC
DWORD lPrivate;
#endif
} MSG, *PMSG, NEAR *NPMSG, FAR *LPMSG;
1、在公共头文件中添加自定义消息
const UINT WM_TESTMESSAGE = WM_USER + 0x100;
2、在类的头文件中,添加函数声明,和普通函数类似,只是消息函数有固定的格式
afx_msg LRESULT OnTestMessage(WPARAM wParam, LPARAM lParam);
3、在类的实现文件中,添加消息映射,以告知程序当接收到WM_TESTMESSAGE消息时,应该交由哪个函数处理
BEGIN_MESSAGE_MAP(CReceiveDlg, CDialogEx)
ON_MESSAGE(WM_TESTMESSAGE, OnTestMessage)
END_MESSAGE_MAP()
4、编写消息对应的函数具体实现
LRESULT CReceiveDlg::OnTestMessage(WPARAM wParam, LPARAM lParam)
{
}
5、使用PostMessage或者SendMessage发送自定义消息
::PostMessage(m_pRecvDlg->GetSafeHwnd(),WM_TESTMESSAGE, (WPARAM)pInfo, 0);
如下图,发送消息 窗口输入一个芯片编号,然后通过PostMessage传递给接收窗口显示。
测试项目链接链接: https://pan.baidu.com/s/1l2WoEXC2amxuf6v9YoaKTg 提取码: vy3u