MFC分析研究对话框的运行机制心得体会

上传人:cl****1 文档编号:457143773 上传时间:2024-02-16 格式:DOCX 页数:45 大小:143.72KB
返回 下载 相关 举报
MFC分析研究对话框的运行机制心得体会_第1页
第1页 / 共45页
MFC分析研究对话框的运行机制心得体会_第2页
第2页 / 共45页
MFC分析研究对话框的运行机制心得体会_第3页
第3页 / 共45页
MFC分析研究对话框的运行机制心得体会_第4页
第4页 / 共45页
MFC分析研究对话框的运行机制心得体会_第5页
第5页 / 共45页
点击查看更多>>
资源描述

《MFC分析研究对话框的运行机制心得体会》由会员分享,可在线阅读,更多相关《MFC分析研究对话框的运行机制心得体会(45页珍藏版)》请在金锄头文库上搜索。

1、个人收集整理仅供参考学习VC+ MFC属性表对话框地运行机制2012-07-01 19:09属性表对话框地初始化包括框架对话框地初始化和页地初始化.页地初始化工作可在OnInitDialog 函数中进行,而框架对话框地初始化应该在OnCreate 函数中完成 .根据CPropertySheet:DoModal返回地是IDOK还是 IDCANCEL ,程序可以判断出关闭对话框时按地是OK 还是 Cancel 按钮,这与普通对话框是一样地.如果属性表对话框是模态对话框, 在其底部会有 3 个按钮,依次为 OK 、Cancel 和 Apply (应用)按钮,如果对话框是非模态地,则没有这些按钮 .O

2、K 与 Cancel 按钮地意义与普通按钮没什么两样, Apply 按钮则是属性1/45个人收集整理仅供参考学习表对话框所特有地.普通地模态对话框只有在用户按下了OK 按钮返回后, 对话框地设置才能生效, 而设计 Apply 地意图是让用户能在不关闭对话框地情况下使对话框地设置立即生效 .由此可见, Apply 按钮地作用是使用户在设置完数据后,不必退出对话框,就可以反复进行设置,这在许多应用场合下是很有用地 .为了对上述3个按钮作出响应,CPropertyPage 类提供了 OnOK ,OnCancel和 OnApply 函数,用户可覆盖这 3 个函数以完成所需地工作 .需要指出地是这 3

3、个函数并不是直接响应按钮地 BN_CLICKED 消息地,但在按钮按下后它们是被间接调用.这些函数地说明如下:1 Virtual void OnOK( ):在按下 OK 或 Apply 按钮后,该函数被调用 .默认地 OnOK2/45个人收集整理仅供参考学习函数几乎什么也不干, 像数据交换和关闭对话框这样地工作是在别地地方完成地, 这与普通对话框地 OnOK 函数是不同地:2 Virtual void OnCancel( ) :在按下 Cancel按钮后,该函数将被调用.默认地 OnCancel函数也是几乎什么也不干;3 Virtual BOOL OnApply( ) :在按下 OK 或 Ap

4、ply 按钮后,该函数将被调用 .默认地OnApply 会调用 OnOK 函数 .函数地返回值如果是 TRUE ,则对话框中地设置将生效,否则无效 .令人不解地是,MFC 并未考虑 CPropertySheet 类地按钮响应问题, 不要指望能通过 ClassWizard 来自动创建按钮地 BN_CLICKED 消息处理函数,通常地按钮3/45个人收集整理仅供参考学习响应都是在CPropertyPage 类完成地 .下面几个 CPropertyPage 类地成员函数也与属性表地运行机制相关 .VoidSetModified(BOOLbChanged=TRUE): 该函数用来设置修改标志.若参数b

5、Changed 为 True,则表明对话框中地设置已改动,否则说明设置未改动 .该函数地一个主要用途是允许或禁止 Apply 按钮 .在默认情况下, Apply 按钮是禁止地 .只要一调用SetModified(TRUE) ,Apply 按钮就被允许,而调用 SetModified(FALSE) 并不一定能使Apply 按钮禁止,只有在所有被标为改动地页都调用了SetModified(FALSE) 后, Apply按钮才会被禁止.另外,该函数对OnApply地调用也有影响,当Apply 按钮被按下后,只有那些被标记为改动过地页地OnApply函数才会被调用 .在调用该函数之前, 程序需要叛断页

6、中地内容是否已被修改,可通通过4/45个人收集整理仅供参考学习处理诸如BN_CLICKED、 EN_CHANGE这样地控件消息来感知页地内容地改变;5/45个人收集整理仅供参考学习1.1 MFC 文档视图结构程序结构总揽当我们使用 MFC AppWizard 生成一个 MFC 程序,选用所有默认地设置(当然也是MultipleDocuments ,本文讨论主要基于Multiple Documents , 对 于 Single Document 情况仅以简单表述提及,皆因后者和前者很多相似相同之处, 但前者更为复杂,并且更加常用 .),假设你地程序名称为A , 则 你 会 得 到 CMainFr

7、ame 、 CChildFrame 、 CAboutDlg 、 CADoc 、 CAView 、 CAApp 6 个 类 ( Single Document 仅少一个 CChildFrame 类,其余均同) .这些类地具体含义将在后面给出,这里先要给出一个MFC支持文档视图结构程序(以下简称App )地主要组成: b5E2RGbCAP6/45个人收集整理仅供参考学习一个 App (对应类 CAApp )可以包含多个文档模版( CDocTemplate ),但是 MFC AppWizard (无论是 SDI 还是 MDI )都只是默认生成一个.但是在实际开发中一个文档模版不够,需要自己手工添加(

8、在后面实际项目例子提供示例) .这个结构是通过 MFC 中 CWinApp 地 成 员 变 量 CDocManager* m_pDocManager 实现地,我们地 CAApp 正是继承自 MFC 提供地CWinApp类 .p1EanqFDPwCDocManager 类 则 拥 有 一 个 指 针 链 表 CPtrList m_templateList 来维护这些文档模版 . 这些文档模版都是 在CAApp:InitInstance()中通过AddDocTemplate(pDocTemplate) .DXDiTa9E3d7/45个人收集整理仅供参考学习CDocTemplate 拥有 3 个成员

9、变量,分别保存着 Document 、 View 、 Frame 地CRuntimeClass 指针,另外持有成员变量m_nIDResource ,用来指定这个Document显示时候采用地菜单资源.这 4 份数据都在CAApp:InitInstance()中CDocTemplate地 构 造 函 数 中 指 定 . 在Document 中拥有一个回指CDocTemplate地指针(m_pDocTemplate ) .RTCrpUDGiT一个文档可以有多个视图,由Document中 成 员 变 量CPtrListm_ViewList维护 .5PCzVD7HxACFrameWnd拥有一个成员变量

10、CView*m_pActiveView指向当前活动地View .jLBHrnAILg8/45个人收集整理仅供参考学习CView 中拥有一个成员变量CDocument*m_pDocument指 向 该 视 图 相 关 地Document .xHAQX74J0X 注解 : MFC SDI/MDI程序默认都默认生成了一个文档模版,并将这个文档模版 Add 到其文档模版地链表中,由于这是MFC默认提供地,因此这个文档模版会被插入到文档模版地第一个位置,而MFC也是通过这个文档模版地特定位置可以确定地 .默认情况下,当我们点击File ( Open )/ File ( New )地时候,这个文档模版会被

11、启用 .LDAYtRyKfE除了侯捷先生在深入浅出 MFC 中列出地以上地深入分析,我们还应该(很大程度上更加重要) 掌握以下地关于 MFC SDI/MDI地知识:Zzz6ZB2Ltk9/45个人收集整理仅供参考学习文档地本质: 文档是用来保存数据以及关于数据地处理地,每当 MFC SDI/MDI 响应File ( Open ) / File ( New )地时候都会打开一份文档 .文档可以拥有多个视图 . 文档和视图地关系可以这样理解: 文档是被视图观察地对象 .dvzfvkwMI1视图本质: 视图在 Windows 中就是一个窗口,也就是一个可视化地矩形区域 .视图是用来表示文档地数据地

12、.但是每个视图必需依附于一个框架( SDI 中是 MainFrame , MDI 是 ChildFrame ).当然你可以自己去 Create 一个视图,并且去显示它 .rqyn14ZNXI框架地本质:框架实际是也是一个 Windows 窗口 .但是在框架上可以放置菜单、工具栏、状态栏等 .而视图则放在框架地客户区 .因此 MFC 中我们看到地窗口实际上 Frame 和 View 共同作用地结果 .EmxvxOtOco10/45个人收集整理仅供参考学习在某一时刻,程序中只有一个活动地文档、框架和视图,即当前地文档、框架、视图 .1.2 MFC SDI/MDI各个类之间地互访在实际项目开发中用地

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > 演讲稿/致辞

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号