gpt4 book ai didi

c++ - 如何在 SDI 项目中使用 UI 线程

转载 作者:行者123 更新时间:2023-11-28 01:16:38 25 4
gpt4 key购买 nike

Sample Project使用 Visual Studio 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;
}

在管理器对话框中,创建线程对话框。当我调用 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;
}

最佳答案

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

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

关于c++ - 如何在 SDI 项目中使用 UI 线程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58495636/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com