求助,MDI的多线程导致主消息循环挂掉。 本帖最后由 cool1949 于 2011-01-26 23:49:54 编辑 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 关键是:m_wndView->Create创建之后,这个UI线程便接收分发消息,再sleep,就会对整个消息循环造成影响。很奇怪,求解。 我觉得问题可能是这一句:m_pMainWnd = m_wndView;你把m_pMainWnd赋值为m_wndView,相当于整个程序的主线程变成了m_wndView,然后你在这里睡眠,相当主线程睡眠,当然你之前的菜单响应等等消息都不是在m_wndView类里面,所以就不能动了~~仅为个人猜想~~~可能不对 m_pMainWnd = m_wndView这里的m_pMainWnd是另外一个类的变量,不是CWinApp里面的,刚刚测试了下m_pMainWnd = m_wndView或m_pMainWnd 赋值为主线程的也不行放在后面,前面,删除都还是一样的。MSDN上说:重载CWinThread::InitInstance()函数,在其中创建窗口并将窗口指针赋给m_pMainWnd。 这一步应该没问题。 搞定,使用多线程的COM模型即可。Sleep不卡了 讨论贴:对于VC++桌面软件,怎么查CPU占用高的原因? wcsicmp 和 wsprintfW 读几百兆的文件时程序会假死 OCX如何从IE中获取参数 OLE 请问这个错误怎么解决serverDlg.obj : error LNK2001: unresolved external symbol "public: bool __thiscall ....... 关于OS/2的问题 高手请进,关于组件注册问题??? 仪器仪表界面 很简单,送20分 关于每个窗口一个线程的问题 CListCtrl DeleteItem 有空白项,重新对项排序的凝问?
我觉得问题可能是这一句:m_pMainWnd = m_wndView;你把m_pMainWnd赋值为m_wndView,相当于整个程序的主线程变成了m_wndView,然后你在这里睡眠,相当主线程睡眠,当然你之前的菜单响应等等消息都不是在m_wndView类里面,所以就不能动了~~仅为个人猜想~~~可能不对
m_pMainWnd = m_wndView
或
m_pMainWnd 赋值为主线程的也不行
放在后面,前面,删除都还是一样的。MSDN上说:
重载CWinThread::InitInstance()函数,在其中创建窗口并将窗口指针赋给m_pMainWnd。 这一步应该没问题。
Sleep不卡了