亿佰文档网

Win32教程32-多文档界面(MDI)

Win32教程32-多文档界面(MDI)


| 首页 >> 编程详解 >> Iczelion的Win32汇编教程 | Win32ASM 论坛 | 联系站长 |


Win32教程32-多文档界面(MDI)
作者:XieJacky翻译·发布日期:2001-6-21·阅读次数:4918


【在这里下载本文的源代码】

本教程


告诉你怎样创建MDI应用程序.事实上并不是很困难.

理论:

多文档界面(MDI)是同一时刻处理多个文档的应用程序的一个规范. 你很熟悉记事本.它是单文档界面(SDI)的一个例子.记事本在一个时候只能处理一个文档.假如你希望打开另一个文档,你首先必须关闭你前面打开的那一个.你可以想象这有多麻烦. 和Microsoft Word相比:Word可以随心所欲的在同一时刻打开任意多个文档,而且可以让用户选择使用哪一个文档.Microsoft Word 是多文档界面(MDI)的一个例子.

MDI应用程序有几个显著的特征:我列举其中的一些:

1.有主窗口,在客户区可以有多个子窗口.所有的子窗口都位于客户区.
2.最小化一个子窗口,它最小化到了主窗口的客户区的左下角.
3.最大化一个子窗口,它的标题和主窗口的标题合并到了一起.
4.你可以通过按Ctrl+F4键来关闭子窗口,还可以通过按Ctrl+Tab键在子窗口之间来切换.

包含子窗口的主窗口被称为框架窗口.主窗口的客户区是子窗口活动的地方,因此有了'框架'这个名字.主窗口的任务要比普通窗口精细一些,因为它需要为MDI处理一些协调工作.

为了在你的客户区控制任意多个数目的子窗口,你需要一个特殊的窗口:客户窗口.你可以把客户窗口看成是覆盖框架窗口的整个客户区的一个透明的窗口.客户窗口才是所有MDI子窗口的实际的父亲.客户窗口是MDI子窗口的真实的监督者.

框架窗口

|
客户窗口

|



| | | | |
MDI 自窗口1
MDI 自窗口 2
MDI自窗口3
MDI自窗口4
MDI 自窗口 n



图1.一个MDI应用程序的层次结构


创建框架窗口

现在我们将注意力放到细节上来.首先你需要创建框架窗口. 创建框架窗口的方法和普通窗口是相同的:调用CreateWindowEx. 和普通窗口相比,有两个主要的不同.

第一个不同是你必须调用DefFrameProc来处理你的窗口不想处理的窗口信息而不是调用DefWindowProc.这是让Windows为你作的保持一个MDI应用程序的垃圾任务的一个方法.假如你忘记使用DefFrameProc,你的应用程序将不具有MDI的功能. DefFrameProc具有下列语法:

DefFrameProc proc hwndFrame:DWORD,
hwndClient:DWORD,
uMsg:DWORD,
wParam:DWORD,
lPar

am:DWORD

假如你将 DefFrameProc 和 DefWindowProc作一个对比,你将会注意到它们之间的唯一的不同在于DefFrameProc有5个参数,而DefWindowProc只有4个.这个增加的参数是客户窗口的句柄.这个句柄是必须的,有了它Windows才可以

相关文档
热门文档
你可能喜欢
评论