首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VC/MFC >

怎么在DLL的辅助线程中创建非模式对话框?

2012-01-12 
如何在DLL的辅助线程中创建非模式对话框??急!!!UINTConnectThread(LPVOIDlParam){CHintDlg*pdlgnewCHintD

如何在DLL的辅助线程中创建非模式对话框??急!!!
UINT     ConnectThread(LPVOID   lParam)
{
CHintDlg   *   pdlg   =   new   CHintDlg;
                  pdlg-> Create(IDD_MY,   CWnd::FromHandle(::GetDesktopWindow()));
                  pdlg-> ShowWindow(...);
}

我在我的DLL中的辅助线程内,想创建一个非模态对话框(因为不想阻塞),如上面的代码,但是发现好象不行。症状是,对话框可以显示出来,但鼠标处于沙漏状态,并且,对话框上的控件不能显示。

请问如何修改?注:创建线程,使用的是AfxBeginThread(CreateThread也试过),都不行。

注:上面的代码,在主线程中内执行就能正常创建对话框。

[解决办法]
你可以在后面+上消息循环

CHintDlg * pdlg = new CHintDlg;
pdlg-> Create(IDD_MY, CWnd::FromHandle(::GetDesktopWindow()));
pdlg-> ShowWindow(...);

MSG msg;
while(GetMessage(&msg,NULL,0,0))
{
if(pdlg-> GetSafeHwnd() == 0 ||!IsDialogMessage(pdlg-> GetSafeHwnd(),&msg)
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
}
[解决办法]
CWnd::FromHandle(::GetDesktopWindow())); 可能是这...被别的窗口盖住了吧?

又不是主线程,也不阻塞?
[解决办法]
pdlg-> Create(IDD_MY, CWnd::FromHandle(::GetDesktopWindow()));
====================
改成: pdlg-> Create(IDD_MY, NULL);试试

热点排行