MDI 创建
1 CilentWindow
1.1 CLIENTCREATESTRUCT
typedefstruct tagCLIENTCREATESTRUCT {
HANDLE hWindowMenu;
UINT idFirstChild;
} CLIENTCREATESTRUCT, *LPCLIENTCREATESTRUCT;
<1>hWindowMenu 多文档应用窗口程序的菜单
<2>idFirstChild 指定第一个创建的MDI子窗口的ID,其后创建的MDI子窗口ID会在此基础上增加,并且随着窗口的销毁会重新分配ID。它们主要用在MDI子窗口向MDIFrame窗口中发送消息。
1.2 ClientWindow的创建
case WM_CREATE: // Create the client window
clientcreate.hWindowMenu = hMenuInitWindow ;
clientcreate.idFirstChild = IDM_FIRSTCHILD ;
hwndClient = CreateWindow( TEXT("MDICLIENT"), NULL, WS_CHILD |WS_CLIPCHILDREN | WS_VISIBLE, 0, 0, 0, 0, hwnd, (HMENU)1,hInst, (PSTR)&clientcreate) ;
return 0 ;
2 MDI Window
2.1 MDICREATESTRUCT
typedef struct tagMDICREATESTRUCT {
LPCTSTR szClass;
LPCTSTR szTitle;
HANDLE hOwner;
int x;
int y;
int cx;
int cy;
DWORD style;
LPARAM lParam;
} MDICREATESTRUCT,*LPMDICREATESTRUCT;
<1> hOwner 指创建MDI Client 窗口的hInstance
2.2 MDI child 窗口的创建
创建一个MDI child 窗口有三种方式
<1>通过向Client窗口发送WM_MDICREATE
case IDM_FILE_NEWHELLO: // Create a Hello child window
mdicreate.szClass = szHelloClass;
mdicreate.szTitle = TEXT ("Hello");
mdicreate.hOwner