[NOTES]深入浅出MFC[2]
2008-08-09 17:41
141 查看
1、对话框的运作
Windows 的对话框依其与父窗口的关系,分为两类:
<1>「令其父窗口除能,直到对话框结束」,这种称为modal 对话框。
<2> 父窗口与对话框共同运行」,这种称为modeless 对话框。
比较常用的是modal 对话框。为了做出一个对话框,程序员必须准备两样东西:
<1>对话框模板(dialog template)。这是在RC 文件中定义的一个对话框外貌,以各种方式决定对话框的大小、字形、内部有哪些控制组件、各在什么位置...等等。
<2>对话框函数(dialog procedure)。其类型非常类似窗口函数,但是它通常只处理WM_INITDIALOG 和WM_COMMAND 两个消息。对话框中的各个控制组件也都是小小窗口,各有自己的窗口函数,它们以消息与其管理者(父窗口,也就是对话框)沟通。而所有的控制组件传来的消息都是WM_COMMAND,再由其参数分辨哪一种控制组件以及哪一种通告(notification)。
【Modal 对话框的激活与结束,靠的是DialogBox 和EndDialog 两个API 函数】
[align=center] [/align]
对话框的诞生、运作与结束
2、模块定义文件<.DEF>
Windows 程序需要一个模块定义文件,将模块名称、程序节区和资料节区的内存特性、模块堆积(heap)大小、堆栈(stack)大小、所有callback 函数名称...等等登记下来。【VC++中现在已经不再需要模块定义文件】
3、资源描述档<.RC>
RC 文件是一个以文字描述资源的地方。常用的资源有九项之多,分别是ICON、CURSOR、BITMAP、FONT、DIALOG、MENU、ACCELERATOR、STRING、VERSIONINFO。还可能有新的资源不断加入。这些文字描述需经过RC 编译器,才产生可使用的二进制代码。
4、Windows 程序的生与死
通过以上的介绍已经了解Windows 程序的架构以及它与Windows 系统之间的关系。对Windows 消息种类以及发生时机的透彻了解,正是程序设计的关键。下面以窗口的诞生和死亡,说明消息的发生与传递,以及应用程序的兴起与结束。
窗口的生命周期
5、为什么结束一个程序复杂如斯?因为操作系统与应用程序职司不同,二者是互相合作的关系,所以必需各做各的份内事,并互以消息通知对方。如果不依据这个游戏规则,可能就会有麻烦产生。
[今天稍微有些头疼,偷下懒,少看一点儿]
Windows 的对话框依其与父窗口的关系,分为两类:
<1>「令其父窗口除能,直到对话框结束」,这种称为modal 对话框。
<2> 父窗口与对话框共同运行」,这种称为modeless 对话框。
比较常用的是modal 对话框。为了做出一个对话框,程序员必须准备两样东西:
<1>对话框模板(dialog template)。这是在RC 文件中定义的一个对话框外貌,以各种方式决定对话框的大小、字形、内部有哪些控制组件、各在什么位置...等等。
<2>对话框函数(dialog procedure)。其类型非常类似窗口函数,但是它通常只处理WM_INITDIALOG 和WM_COMMAND 两个消息。对话框中的各个控制组件也都是小小窗口,各有自己的窗口函数,它们以消息与其管理者(父窗口,也就是对话框)沟通。而所有的控制组件传来的消息都是WM_COMMAND,再由其参数分辨哪一种控制组件以及哪一种通告(notification)。
【Modal 对话框的激活与结束,靠的是DialogBox 和EndDialog 两个API 函数】
[align=center] [/align]
对话框的诞生、运作与结束
2、模块定义文件<.DEF>
Windows 程序需要一个模块定义文件,将模块名称、程序节区和资料节区的内存特性、模块堆积(heap)大小、堆栈(stack)大小、所有callback 函数名称...等等登记下来。【VC++中现在已经不再需要模块定义文件】
3、资源描述档<.RC>
RC 文件是一个以文字描述资源的地方。常用的资源有九项之多,分别是ICON、CURSOR、BITMAP、FONT、DIALOG、MENU、ACCELERATOR、STRING、VERSIONINFO。还可能有新的资源不断加入。这些文字描述需经过RC 编译器,才产生可使用的二进制代码。
4、Windows 程序的生与死
通过以上的介绍已经了解Windows 程序的架构以及它与Windows 系统之间的关系。对Windows 消息种类以及发生时机的透彻了解,正是程序设计的关键。下面以窗口的诞生和死亡,说明消息的发生与传递,以及应用程序的兴起与结束。
窗口的生命周期
5、为什么结束一个程序复杂如斯?因为操作系统与应用程序职司不同,二者是互相合作的关系,所以必需各做各的份内事,并互以消息通知对方。如果不依据这个游戏规则,可能就会有麻烦产生。
[今天稍微有些头疼,偷下懒,少看一点儿]
相关文章推荐
- [NOTES]深入浅出MFC[1]
- 深入浅出Win32多线程设计之MFC的多线程(4)
- MFC学习(读MFC深入浅出)
- 看深入浅出MFC
- 深入浅出话VC++(2)——MFC的本质
- 深入浅出MFC 第8章 关于序列化(Serialize)的一些问题
- 深入浅出MFC》学习笔记之一
- <深入浅出mfc>第8章Document-View 深入探讨
- 深入浅出Win32多线程程序设计--之MFC的多线程
- MFC深入浅出学习心得(每日增加)
- 我另一个号上的文章《<深入浅出MFC>观后有感》
- 学习笔记:候捷深入浅出MFC第二章
- 关于"深入浅出MFC"的几个问题
- 手写MFC的深入浅出
- 深入浅出Win32多线程设计之(四):MFC的多线程
- 深入浅出MFC文档/视图架构之相互关系(转)
- 深入浅出MFC笔记2-MFC程序如何包装Win32程序
- 深入浅出MFC:再来一发~~~MFC的Persistence(永久保存)机制
- VC++动态链接库(DLL)编程深入浅出之二(1)——非MFC dll
- 深入浅出 mfc Command Routing 命令传递