Windows编程之MDI

本文详细介绍了Windows编程中的MDI(Multiple Document Interface),包括客户端窗口创建、MDI子窗口创建、窗口消息处理,特别是WM_MDIACTIVATE消息。讨论了MDI窗口应用程序的结构,如Frame Window、Client Window和Child Window,以及MDI窗口菜单的设计和Window Menu的使用。此外,还涵盖了WM_MDISETMENU消息的作用以及不同参数设置下的效果。
摘要由CSDN通过智能技术生成

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值