比如有一个函数test(),怎么用SendMessage触发它啊!下面一段话是我在网上找到的,我遇见了同样的问题,想试试它的方法我在线程里调用一个函数test()test里有调用对话框domadal一运行到这个就出现错误,程序意外终止,domodal不出现!test里的代码CDlginput;if(input.DoModal()!=IDOK).................把tset改成消息响应函数也不行.domodal窗口能出现点确定按钮之后出错!在线程里怎么才能调用domodal???? ________________________________________答:这种用工作线程不好搞一样,用界面线程,应该可以吧 ________________________________________答:我把test函数改成消息响应函数了用SendMessage触发test函数试了几次不出错了.不知道为啥在线程里直接调用test函数为啥出错我是用MFC做的,希望是能够说的具体一点,初学者,没办法……
1 回答
萧十郎
TA贡献1815条经验 获得超13个赞
初学者经常犯得错误,就是在一个线程中调用如AfxMessageBox的对话框,这样你的线程就死了。
在线程中,你必须向一个窗口发送一个消息,那个窗口接收到消息后,让它去掉用DoModal之类的函数。
你可以在CreateThread,将那个窗口的 m_hWnd当成LPVOID lpParameter,
传递进去,那么在DWORD WINAPI ThreadProc( LPVOID lpParameter );的lpParameter 就是那个窗口句柄了。这样你就可以向那个窗口SendMessage了。
- 1 回答
- 0 关注
- 276 浏览
添加回答
举报
0/150
提交
取消