主线程向副线程post用这个函数
BOOL PostThreadMessage(
DWORD idThread, // thread identifier
UINT Msg, // message
WPARAM wParam, // first message parameter
LPARAM lParam // second message parameter
);
副线程就用postmessage就行了。没什么特别要说明的吧。
BOOL PostThreadMessage(
DWORD idThread, // thread identifier
UINT Msg, // message
WPARAM wParam, // first message parameter
LPARAM lParam // second message parameter
);
副线程就用postmessage就行了。没什么特别要说明的吧。
解决方案 »
- 类似千千静听 和 QQ音乐的桌面歌词是如何实现的
- [非技术散分贴]送祝福!见者有份,一个IT悲催男的愿望!望各位大牛们实现!
- 与指针和类的多态性有关的问题
- 如:十六进制的0x343,怎样得到高字节0x03和低字节0x43?
- ###关于Dlg动态缩放的种种,高手请帮个忙,小弟弟先谢过
- 求VC做的仿资源管理器(基于对话框的)
- 有人了解北京博彦吗?给我介绍一下,谢谢。
- 我想编辑一个对话框程序,点击上面的按钮可以调用其他的EXE的可执行文件。请问,可以使用那些函数?
- 问题简单还高分???
- 如何在VC中强制关闭一个程序?
- 谁有SMPP协议的中文文档啊?高分相送
- 在线等待---动态创建了一组 EDIT,请问怎样映射 EN_CHANGE 消息来检测他们的内容发生了变化?
::PostMessage((HWND)pParam,WM_SWFINISHED,0,0);
这个pParam就是辅助线程函数的参数,
UINT SampleSWThread(LPVOID pParam),
而这个参数又是主线程启动辅助线程的函数,
pWinThread=AfxBeginThread(SampleSWThread,
AfxGetMainWnd()->GetSafeHwnd(),
THREAD_PRIORITY_NORMAL,
0,
CREATE_SUSPENDED
);
中的第二个参数,
所以如果启动辅助线程的第二个参数是null,
那么辅助线程中发的消息,就找不到正确的Hwnd,
结果消息不能被正确响应,
以上是我自己编程过程中的理解,不知道正确不正确,
那么AFxBeginThread()函数的第二个参数应该正确给予,
如果这个函数放在View 中,第二个参数
应该是GetSafeHwnd(),我试过没问题可以响应消息,
后来我放倒app()中,第二个参数
换成AfxGetMainWnd()->GetSafeHwnd(),结果消息就不能被相应了,
还没搞太清楚是参数不对,还是别的地方出了问题,
讨论讨论,也请高手指点!
我想,我的相应消息函数是放在View中的,
那么Hwnd也应该是View的,所以在View中GetSafeHwnd()传递过去没问题,
而app中,AfxGetMainWnd()->GetSafeHwnd(),得到的是不是是mainFrame
的hwnd? 那么怎么得到View的Hwnd那?
以上有错误的地方,请大家指出
邮箱:[email protected]
邮箱:[email protected]
可以对其他窗口进行通信
解释:
CSockDlg*是主对话框类的指针;
h_sockdlg对应在程序中的如下声明extern HWND h_sockdlg;
M_BIGIN_HUAKUAN是用户自定义消息;
这样就可正常执行了
void ThreadPlay(CDialog * pDlg);中CDialog中,打开线程中,参数用this就可以了AfxBeginThread((AFX_THREADPROC)ThreadPlay, this,...);void ThreadPlay(CDialog * pDlg)
{
pDlg->PostMessage();// 不就行了吗}