注册窗口消息
1.UINT nMsgRegistered = ::RegisterWindowMessage(TEXT(“RegisterMsgName”));
2.afx_msg LRESULT OnMyRegisteredMsg(WPARAM, LPARAM);
3.
LRESULT CTestDlg::OnMyRegisteredMsg(WPARAM wParam, LPARAM lParam)
{...}
- 1
- 2
4.
BEGIN_MESSAGE_MAP(CMyDlg, CDialog)
...
ON_REGISTERED_MESSAGE(nMsgRegistered, &CTestDlg::OnMyRegisteredMsg)
END_MESSAGE_MAP()
- 1
- 2
- 3
- 4
注册线程消息
1.UINT nThrdMsgRegistered = ::RegisterWindowMessage(TEXT(“MyThrdMsg”));
2.afx_msg void OnMyRegisterdThrdMsg(WPARAM, LPARAM);
3.
void CTestApp::OnMyRegisterdThrdMsg(WPARAM wParam, LPARAM lParam)
{...}
- 1
- 2
4.
BEGIN_MESSAGE_MAP(CTestApp, CWinAppEx)
...
ON_REGISTERED_THREAD_MESSAGE(nThrdMsgRegistered, &CTestApp::OnMyRegisterdThrdMsg)
END_MESSAGE_MAP()
- 1
- 2
- 3
- 4
那怎样在当前线程中触发注册的线程消息呢?有以下两种方法:
::PostMessage(NULL, nThrdMsgRegistered, 0, 0);
::PostThreadMessage(::GetCurrentThreadId(), nThrdMsgRegistered, 0, 0);