样本工程在Visual 2008上工作。
我需要UI线程来修改SDI项目。我以前使用过基于对话框的项目。在SDI项目中,我可以创建线程,但不能使用它。
我创建“经理对话框”。
SDIProjectView.cpp
int CSDIProjectView::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
if (CView::OnCreate(lpCreateStruct) == -1)
return -1;
m_pViewMgr = new CDlgViewMgr(this);
m_pViewMgr->Create(IDD_DIALOG_VIEWMGR, this);
m_pViewMgr->ShowWindow(SW_SHOW);
return 0;
}在Manager对话框中,创建线程对话框。当我调用ShowWindow时,m_pDlg->hWnd是无效值。什么是最明智的用户操作方式?
CDlgViewMgr.cpp
BOOL CDlgViewMgr::OnInitDialog()
{
CDialogEx::OnInitDialog();
m_view = new CDlgThread(this);
m_view->CreateThread();
m_view->m_pDlg->ShowWindow(SW_NORMAL);
return TRUE;
}发布于 2019-10-22 02:33:26
将所有GUI对象保留在主线程中,并将其他大量工作放在单独的线程中,以使应用程序响应。在工作线程中创建子对话框将带来麻烦,因此不建议使用。
此外,避免在CWnd::Create()中调用ShowWindow()。在父窗口完全准备就绪之前,不能请求显示子窗口。
https://stackoverflow.com/questions/58495636
复制相似问题