在 MFC(Microsoft Foundation Classes)中,CMDIChildWnd 类提供了 Create 方法,用于创建 MDI(多文档界面)子窗口。这个方法通常在应用程序中用于动态创建 MDI 子窗口。

以下是 CMDIChildWnd 类中 Create 方法的基本语法:
BOOL Create(
    LPCTSTR lpszClassName,
    LPCTSTR lpszWindowName,
    DWORD dwStyle = WS_CHILD | WS_VISIBLE | WS_OVERLAPPEDWINDOW,
    const RECT& rect = rectDefault,
    CMDIFrameWnd* pParentWnd = NULL,
    CCreateContext* pContext = NULL
);

参数说明:
  •  lpszClassName:指定 MDI 子窗口类名。在大多数情况下,可以将其设置为 NULL,以使用默认的 MDI 子窗口类。

  •  lpszWindowName:指定 MDI 子窗口的窗口名称。

  •  dwStyle:指定 MDI 子窗口的窗口样式,默认为 WS_CHILD | WS_VISIBLE | WS_OVERLAPPEDWINDOW。

  •  rect:指定 MDI 子窗口的初始位置和大小,默认为 rectDefault。

  •  pParentWnd:指定 MDI 子窗口的父窗口,通常是 MDI 主框架窗口。

  •  pContext:指定用于创建 MDI 子窗口的上下文信息。


以下是一个简单的示例代码,演示如何使用 Create 方法创建 MDI 子窗口:
#include <afxwin.h>

class CMyMDIChild : public CMDIChildWnd
{
public:
    CMyMDIChild() {}
};

class CMyMDIFrame : public CMDIFrameWnd
{
public:
    CMyMDIFrame()
    {
        Create(NULL, L"My MDI Frame", WS_OVERLAPPEDWINDOW, rectDefault, NULL, L"MenuID");

        // 创建 MDI 子窗口
        CMyMDIChild* pChildWnd = new CMyMDIChild;
        pChildWnd->Create(NULL, L"My MDI Child", WS_OVERLAPPEDWINDOW, rectDefault, this);
    }
};

class CMyApp : public CWinApp
{
public:
    virtual BOOL InitInstance()
    {
        // 初始化 MFC 应用程序
        CMyMDIFrame* pFrame = new CMyMDIFrame;
        m_pMainWnd = pFrame;
        pFrame->LoadFrame(IDR_MAINFRAME);
        pFrame->ShowWindow(SW_SHOW);
        pFrame->UpdateWindow();

        return TRUE;
    }
};

CMyApp theApp;

在这个示例中,我们创建了一个自定义的 CMyMDIChild 类,继承自 CMDIChildWnd。在 CMyMDIFrame 构造函数中,我们使用 Create 方法创建了一个 MDI 子窗口,并设置了一些基本的属性。这个示例主要用于说明在 MDI 应用程序中使用 Create 方法创建 MDI 子窗口的一般过程。


转载请注明出处:http://www.zyzy.cn/article/detail/18836/MFC/CMDIChildWnd