如何在MFC中创建两个窗口(MDI + SDI)

时间:2019-03-02 03:03:42

标签: c++ user-interface mfc

我需要在一个应用程序中创建两种不同类型的窗口,一种是MDI,另一种是SDI。我试图用文档/视图创建MDI应用程序,并放入一些代码来创建SDI窗口,但是失败了。似乎MDI和SDI是用不同的方法创建的,我不知道如何找到一种解决方法。有人知道最好的方法吗?


经过一些尝试,我成功地创建了SDI和MDI窗口,但是我不确定这是否是正确的方法。这就是我所做的

使用Visual Studio的AppWizard创建一个SDI应用程序,当用户单击SDI Frame的菜单时,我放置了以下代码来创建MDI窗口

CSDIFrame::OnClickCreateMDI()
{
CFrameWnd* pFrameMDI = new TestMDIFrameWnd;
CCreateContext Context;
Context.m_pNewViewClass = RUNTIME_CLASS(CTestMDIView);
if (!pFrameMDI->LoadFrame(IDR_TESTMDIFRAME, WS_OVERLAPPEDWINDOW, NULL, &Context)) {
AfxMessageBox("LoadFrame failed");
return FALSE;
}
pFrameMDI->InitialUpdateFrame(NULL, TRUE);
}

这是正确的方法吗?是否可以像使用AppWizard创建此MDI窗口一样,在此新创建的MDI窗口上使用所有MFC编程方法?是否会有任何限制(例如某些消息无法发送到此MDI窗口...。)

谢谢。

1 个答案:

答案 0 :(得分:0)

经过一些尝试和研究MFC书籍和MFC源代码,我已经成功地从SDI窗口创建了MDI窗口。我可以将多个窗格的多个窗格添加到MDI。并且退出应用程序也可以,没有任何错误。这并不容易,要做到这一点有一些棘手的部分。

enter image description here