描述:
我在我的APP类里
afx_msg LRESULT OnTimeHandle(WPARAM wParam, LPARAM lParam);
在cpp里定义了
#define TimeHandleWindowMessage WM_USER+200
ON_MESSAGE(TimeHandleWindowMessage, OnTimeHandle)
LRESULT CTestModuleApp::OnTimeHandle(WPARAM wParam, LPARAM lParam)
{
CUdpTestComm* m_UdpTestComm = (CUdpTestComm*)lParam;
if(m_UdpTestComm)
m_UdpTestComm->HandleTimeout();
return 0;
}
我想触发该消息:
theApp.PostThreadMessage(TimeHandleWindowMessage, 0, (DWORD)this);
为什么,不进入那个消息处理函数中?
解决方案1:
试试create一个wnd变量--》注册窗口句柄--》然后循环取消息。
while(bShutdown){ peekMessage()...... }
不好意思,很久没写C++了,意思是对的,应该看的懂吧.
试试用SendMessage(AfxGetMainWnd()->m_hand,xxx,xxx);
解决方案3: 消息机制是在窗口之上建立的,app只响应集中特殊的消息,也忘了那些了,一般我的处理方法是建立一个dlg,然后在里面响应消息(保证能使)
方法二,想建立一个ontimer,你也可以利用事件处理。
up
解决方案5: 如果用消息映射的话,PostThreadMessage()对应的消息映射宏为
ON_THREAD_MESSAGE而不是ON_MESSAGE
呃……你是在人家的地头上,所以人家的消息循环不把消息传递给你自己处理了也有可能,WM_USER+200不是固定给你用的。确保你可以收到消息的方法是用Hook和RegisterMessage