在ACE_Task中 postmessage给MFC主窗口
在MFC与ACE混合编程时,我要在ACE的ACE_Task线程里向MFC主窗口发消息int WL_AS_ServerTask::svc(void)
{
//1
PostMessage(AfxGetMainWnd()->GetSafeHwnd(),ID_MESSAGE_REFRESH_SERVER,0,0);
//2
//AfxGetMainWnd()-> PostMessage(ID_MESSAGE_REFRESH_SERVER,0,0);
return 0;
}
使用第一种,主窗口接收不到消息;
使用第二种,出错,Debug出错在afxwin2.inl文件的
#pragma pop_macro("SendMessage")
_AFXWIN_INLINE BOOL CWnd: PostMessage(UINT message, WPARAM wParam, LPARAM lParam)
{ ASSERT(::IsWindow(m_hWnd)); return : PostMessage(m_hWnd, message, wParam, lParam); }
请问到底该如何postmessage?:o :D 好像把主窗口作为参数传入ACE_Task,好像可是就可以了
不过郁闷的是,每一个要向主窗口传消息的类都必须传入主窗口参数,难道没法用AfxGetMainWnd()-> PostMessage? 说明你获取的窗口句柄是空或是错误的。导致无法发送成功,自己仔细追踪一下。 谢谢咯:handshake
最后的办法还是把主窗口的指针传给每一个要给他发消息的类:Q
在ACE_Task调用AfxGetMainWnd(),结果指针是空的,但是在MFC的线程里,调用AfxGetMainWnd(),确实能得到主窗口的句柄,不知道为何ace里面的线程就调不到? 线程从本质上没区别,可能是MFC自己做了一些操作导致。MFC分界面线程和非界面线程,就是内部做了一些处理而已。
页:
[1]