线程中创建非模式对话框

laopo163   2008-8-26 14:17 楼主
我在线程中用
pDlg->m_pDlgScreenMap = new CScreenMap();
pDlg->m_pDlgScreenMap->Create(IDD_DIALOG_SCREENMAP,NULL);
pDlg->m_pDlgScreenMap->ShowWindow(SW_SHOW);
pDlg->m_pDlgScreenMap->UpdateWindow();
创建对话框,结果出现异常
异常的地方在:
               CHandleMap* pMap = afxMapHWND();
                ASSERT(pMap != NULL);

                CObject* p;
                ASSERT((p = pMap->LookupPermanent(m_hWnd)) != NULL ||
                        (p = pMap->LookupTemporary(m_hWnd)) != NULL);
                ASSERT((CWnd*)p == this);   // must be us

回复评论 (5)

我很急,有没有人会呀!!!先谢谢了
点赞  2008-8-26 15:06
没看明白。


出现异常一般都是代码的问题。

如果你在创建CScreenMap的时候出异常,就在
CScreenMap的初始化部分单步跟进去看看就行了。

如果在后面,就看后面代码做了什么操作。
点赞  2008-8-26 16:31
在pDlg->m_pDlgScreenMap->Create(IDD_DIALOG_SCREENMAP,NULL); 之后有异常
异常在ASSERT(pMap != NULL);
这,我跟进去看了,没看懂
点赞  2008-8-26 16:58

你要在CScreenMap类的创建的代码中跟。
象wm_create,或者WM_INITDIALOG中。
点赞  2008-8-26 18:04
在工作者线程里创建窗口,应该会出问题的。在主线程里做吧。
点赞  2008-8-30 10:22
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复