首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在SDI项目中使用UI线程?

如何在SDI项目中使用UI线程?
EN

Stack Overflow用户
提问于 2019-10-22 00:26:22
回答 1查看 66关注 0票数 0

样本工程在Visual 2008上工作。

我需要UI线程来修改SDI项目。我以前使用过基于对话框的项目。在SDI项目中,我可以创建线程,但不能使用它。

我创建“经理对话框”。

SDIProjectView.cpp

代码语言:javascript
复制
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

代码语言:javascript
复制
BOOL CDlgViewMgr::OnInitDialog()
{
    CDialogEx::OnInitDialog();

    m_view = new CDlgThread(this);
    m_view->CreateThread();

    m_view->m_pDlg->ShowWindow(SW_NORMAL);
    return TRUE;  
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-10-22 02:33:26

将所有GUI对象保留在主线程中,并将其他大量工作放在单独的线程中,以使应用程序响应。在工作线程中创建子对话框将带来麻烦,因此不建议使用。

此外,避免在CWnd::Create()中调用ShowWindow()。在父窗口完全准备就绪之前,不能请求显示子窗口。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58495636

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档