线程中不能创建模态对话框 20
在VC++6.0里中,自己做了一个对话框,并创建了对话框类CTestDlg;使用CreateThread(NULL,0,_ThreadProc,NULL,0,NULL)启...
在VC++ 6.0里中,自己做了一个对话框,并创建了对话框类CTestDlg;
使用CreateThread(NULL,0,_ThreadProc,NULL,0,NULL)启动了线程
线程函数如下:
WINAPI DWORD _ThreadProc(LPVOID pParam)
{
CTestDlg dlg;
dlg.DoModal();
return 0;
}
调试出现错误,发现dlg中的m_hWnd为Error:expression cannot be evaluted
也就是说dlg根本就没创建成功。
都有什么原因导致了创建失败呢?
刚才看了大家回答,说线程中不能创建模态对话框,那么为什么可以在线程中可以使用CFileDialog呢? 展开
使用CreateThread(NULL,0,_ThreadProc,NULL,0,NULL)启动了线程
线程函数如下:
WINAPI DWORD _ThreadProc(LPVOID pParam)
{
CTestDlg dlg;
dlg.DoModal();
return 0;
}
调试出现错误,发现dlg中的m_hWnd为Error:expression cannot be evaluted
也就是说dlg根本就没创建成功。
都有什么原因导致了创建失败呢?
刚才看了大家回答,说线程中不能创建模态对话框,那么为什么可以在线程中可以使用CFileDialog呢? 展开
4个回答
展开全部
WindowsAPI的线程不能调用MFC的东西,要创建MFC的线程才能调用,函数是AfxBeginThread
原形是CWinThread* AfxBeginThread(
AFX_THREADPROC pfnThreadProc,
LPVOID pParam,
int nPriority = THREAD_PRIORITY_NORMAL,
UINT nStackSize = 0,
DWORD dwCreateFlags = 0,
LPSECURITY_ATTRIBUTES lpSecurityAttrs = NULL
);
原形是CWinThread* AfxBeginThread(
AFX_THREADPROC pfnThreadProc,
LPVOID pParam,
int nPriority = THREAD_PRIORITY_NORMAL,
UINT nStackSize = 0,
DWORD dwCreateFlags = 0,
LPSECURITY_ATTRIBUTES lpSecurityAttrs = NULL
);
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
可以给某个窗口发消息(PostMessage)
,由某窗口来弹出对话框。
,由某窗口来弹出对话框。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
在线程里当然不能建立摸态对话框,除非你在线程里使用托管试一下也许可以.
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询