首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在另一个CDialog中显示嵌套的CDialog?

如何在另一个CDialog中显示嵌套的CDialog?
EN

Stack Overflow用户
提问于 2017-12-07 17:28:56
回答 1查看 1.1K关注 0票数 2

我已经创建了两个CDialog类。我们叫他们MainDialog和ExtraDialog。我希望ExtraDialog既可以通过doModal显示,也可以作为MainDialog中的嵌套对话框显示。

我已经可以通过按钮和doModal分别提出来了。然而,我一直被困在如何将它放在MainDialog中。

代码语言:javascript
复制
CWnd* m_pWndStatic = new CWnd;
m_pWndStatic->Create(_T("Something"), _T("Title"), WS_CHILD | WS_VISIBLE, CRect(x, y, xEnd, yEnd), this, idWnd);

CExtraDialog* dlg = new CExtraDialog;
dlg->Create(IDD_NEW_DIALOG, this); //Or second variable can be m_pWndStatic?
//dlg->SetWindowPos(m_pWndStatic, x, y, xEnd, yEnd, SWP_NOZORDER | SWP_NOACTIVATE);
//dlg->Invalidate();
//dlg->ShowWindow(SW_SHOW);
//m_pWndStatic->ShowWindow(SW_SHOW);

在上面,我分享了一些我尝试过的信息。我希望创建一个CWnd,并将对话框放在CWnd中,但我觉得自己错过了一些东西,在网上找不到任何有用的东西。

编辑:我基本上是想把多个CWnds放到一个CDialog中,让CWnd从不同的类运行不同的功能。就像把乐高积木放在一起一样。

Edit2:我发现了一个类似的问题?我希望使它类似,但我只是不想要按钮,我希望其中两个被显示在一次。在主对话框中嵌入对话框并在MFC中按一下按钮切换对话框

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-12-07 20:42:10

我一直被困在如何在MainDialog中放置它。

至少,删除WS_POPUPWS_CAPTIONWS_SYSMENU样式。添加WS_CHILD样式。

强烈建议添加WS_EX_CONTROLPARENT扩展样式,以允许键盘导航进入和退出嵌入式对话框。

例如,在父对话框的OnInitDialog()中,可以添加:

代码语言:javascript
复制
// Note: Create member variable CExtraDialog, so there is no need for dynamic allocation!
m_extraDlg.Create( IDD_NEW_DIALOG, this );

// Adjust styles. 1st parameter removes, 2nd adds.
m_extraDlg.ModifyStyle( WS_POPUP | WS_CAPTION | WS_SYSMENU | WS_THICKFRAME, WS_CHILD );

// Adjust extended styles. 1st parameter removes, 2nd adds.
m_extraDlg.ModifyStyleEx( WS_EX_DLGMODALFRAME | WS_EX_WINDOWEDGE, WS_EX_CONTROLPARENT );

// As we have changed the frame, we let Windows recalculate the non-client area
// by passing the SWP_FRAMECHANGED flag to SetWindowPos().
m_extraDlg.SetWindowPos( nullptr, 0, 0, 0, 0, SWP_FRAMECHANGED | 
     SWP_NOZORDER | SWP_NOOWNERZORDER | SWP_NOMOVE | SWP_NOSIZE | SWP_NOACTIVATE );

我希望创建一个CWnd并将对话框放在CWnd中

我建议始终使用CDialog-derived类作为嵌入对话框的父级。这确保了与Windows对话框管理器在标准键盘导航等功能上的最佳兼容性。你将与系统合作,而不是对抗它。

更多可阅读的内容:

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

https://stackoverflow.com/questions/47700584

复制
相关文章

相似问题

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