Windows SDK笔记(七):创建MDI窗口

这篇笔记介绍了如何在Windows SDK中创建MDI(多文档界面)窗口。MDI窗口由一个框架窗口和多个子窗口组成,框架窗口使用'MDICLIENT'类管理子窗口。文章详细阐述了MDI框架窗口的注册、消息处理以及MDI子窗口的创建过程,包括通过菜单命令动态创建子窗口以及响应用户关闭子窗口的操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 

 

一、概述
MDI窗口包含一个框架窗口和若干子窗口。
实际上,框架窗口本身是一个普通主窗口,不过它的客户去被一个特殊窗口覆盖。
这个特殊窗口是系统预定义的“窗口类”,类名称为:"MDICLIENT"。它负责各个MDI子窗口的管理。


二、窗口建立
1.注册一个MDI框架窗口类,提供MDI框架窗口消息处理函数
MDI框架窗口消息处理函数中,将未处理消息交由DefFrameProc处理

//MDI框架窗口消息处理函数
LRESULT CALLBACK MDIFrameWndProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
{
	//...
	
	//其他消息交给由系统提供的缺省框架处理函数DefFrameProc
	//其中,第二个参数是客户区窗口句柄
	return ::DefFrameProc (hwnd,hwndClient, message, wParam, lParam) ;
}
2.注册多个MDI子窗口类、对应提供各MDI子窗口的消息处理函数
子窗口消息处理函数中,将未处理消息交由MDIDefMDIChildProc处理
//MDI子窗口消息处理函数
LRESULT CALLBACK MDIChildWndProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
{
	//...
	//...
	
	//其他消息交给由系统提供的缺省MDI子窗口处理函数
	return ::DefMDIChildProc (hwnd, message, wParam, lParam) ;
}
3.在框架窗口的客户区建立MDI管理子窗口
MDI子窗口的管理实际上是由框架窗口客户区的"MDILIENT"窗口完成的。
这是一个系统预定义的窗口。

在主窗口收到WM_CREATE消息后:

case WM_CREATE:
{
	hinst=((LPCREATESTRUCT) lParam)->hInstance;
			
	//填充CLIENTCREATESTRUCT结构
	CLIENTCREATESTRUCT clie
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值