王朝百科
分享
 
 
 

MDI支援

王朝百科·作者佚名  2010-01-04  
宽屏版  字体: |||超大  

MDI支援

探讨Windows的MDI支援时需要发表一些新术语。主应用程式视窗称为「框架视窗」,就像传统的Windows程式一样,它是WS_OVERLAPPEDWINDOW样式的视窗。

MDI应用程式还根据预先定义的视窗类别MDICLIENT建立「客户视窗」,这一客户视窗是用这种视窗类别和WS_CHILD样式呼叫CreateWindow来建立的。这一呼叫的最后一个参数是指向一个CLIENTCREATESTRUCT型态的结构的指标。这个客户视窗覆盖框架视窗的显示区域,并提供许多MDI支援。此客户视窗的颜色是系统颜色COLOR_APPWORKSPACE。

文件视窗被称为「子视窗」。通过初始化一个MDICREATESTRUCT型态的结构,以一个指向此结构的指标为参数将讯息WM_MDICREATE发送给客户视窗,就可以建立这些文件视窗。

文件视窗是客户视窗的子视窗,而客户视窗又是框架视窗的子视窗。父-子视窗分层结构如图所示。

您需要框架视窗的视窗类别(及视窗讯息处理程式)和一个由应用程式支援的每类子视窗的视窗类别(及视窗讯息处理程式)。由于已经预先注册了视窗类别,所以不需要客户视窗的视窗讯息处理程式。

Windows 98的MDI支援包括一个视窗类别、五个函式、两个资料结构和12个讯息。前面已经提到了MDI视窗类别,即MDICLIENT,以及资料结构CLIENTCREATESTRUCT和MDICREATESTRUCT。在MDI应用程式中,这五个函式中的两个用于取代DefWindowProc:不再将DefWindowProc呼叫用于所有未处理的讯息,而是由框架视窗程序呼叫DefFrameProc,子视窗程序呼叫DefMDIChildProc。另一个MDI特有的函式TranslateMDISysAccel与第十章中讨论的TranslateAccelerator的使用方式相同。MDI支援也包括ArrangeIconicWindows函式,但有一条专用的MDI讯息使得此函式对MDI程式来说不再必要。

第五个MDI函式是CreateMDIWindow,它使得子视窗可以在单独的执行绪中被建立。这个函式不需要在单执行绪的程式中,我会展示这一点。

在下面的程式中,我将展示12条MDI讯息中的9条(其他三个讯息一般不用),这些讯息的字首是WM_MDI。框架视窗向客户视窗发送其中某个讯息,以便在子视窗上完成一项操作或者取得关于子视窗的资讯(例如,框架视窗发送一个WM_MDICREATE讯息给客户视窗,以建立子视窗)。讯息WM_MDIACTIVATE讯息有点特别:框架视窗可以发送这个讯息给客户视窗来启动一个子视窗,而客户视窗也把这个讯息发送给将被启动或者失去活动的子视窗,以便通知它们这一变化。

 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
如何用java替换看不见的字符比如零宽空格​十六进制U+200B
 干货   2023-09-10
网页字号不能单数吗,网页字体大小为什么一般都是偶数
 干货   2023-09-06
java.lang.ArrayIndexOutOfBoundsException: 4096
 干货   2023-09-06
Noto Sans CJK SC字体下载地址
 干货   2023-08-30
window.navigator和navigator的区别是什么?
 干货   2023-08-23
js获取referer、useragent、浏览器语言
 干货   2023-08-23
oscache遇到404时会不会缓存?
 干货   2023-08-23
linux下用rm -rf *删除大量文件太慢怎么解决?
 干货   2023-08-08
刀郎新歌破世界纪录!
 娱乐   2023-08-01
js实现放大缩小页面
 干货   2023-07-31
生成式人工智能服务管理暂行办法
 百态   2023-07-31
英语学习:过去完成时The Past Perfect Tense举例说明
 干货   2023-07-31
Mysql常用sql命令语句整理
 干货   2023-07-30
科学家复活了46000年前的虫子
 探索   2023-07-29
英语学习:过去进行时The Past Continuous Tense举例说明
 干货   2023-07-28
meta name="applicable-device"告知页面适合哪种终端设备:PC端、移动端还是自适应
 干货   2023-07-28
只用css如何实现打字机特效?
 百态   2023-07-15
css怎么实现上下滚动
 干货   2023-06-28
canvas怎么画一个三角形?
 干货   2023-06-28
canvas怎么画一个椭圆形?
 干货   2023-06-28
canvas怎么画一个圆形?
 干货   2023-06-28
canvas怎么画一个正方形?
 干货   2023-06-28
中国河南省郑州市金水区蜘蛛爬虫ip大全
 干货   2023-06-22
javascript简易动态时间代码
 干货   2023-06-20
感谢员工的付出和激励的话怎么说?
 干货   2023-06-18
 
>>返回首页<<
 
 
静静地坐在废墟上,四周的荒凉一望无际,忽然觉得,凄凉也很美
© 2005- 王朝网络 版权所有