- 1、本文档共13页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
M的FC框架程序剖析
MFC框架程序剖析
1 MFC库是来发Windows应用程序的C++接口,MFC提供了一套面向对象的框架,程序开发人员可以基于这一框架开发Windows 应用程序,MFC采用面向对象的设计方法,将大部分的Windows API 分装到C++类中,一类成员函数的形式提供给程序员调用!
2 必须知道哪些类,哪些代码是向导生成的,哪些类,哪些代码是我们自己编写的!
3CWnd类封装了与窗口相关的操作!
4微软在MFC的底层框架类中分装了这些每一个窗口应用程序都需要的步骤!
5MFC程序也有一个WinMain函数,这个函数是在程序编译连接时有连接器将该函数连接到Test程序中的!
6MFC程序中的类是如何与WinMain函数关联起来的呢?
7为什么要定义一个全局变量theApp呢,让他在WinMain函数执之前执行呢?该对象的作用是什么呢?应用程序的实例是由实例句柄来标示的,而对MFC程序来说,通过产生一个应用程序的对象来唯一标示应用程序的实例!每一个MFC程序仅有一个应用程序类的派生类,每一个MFC程序有且仅有一个该派生类的实例化对象,也就是theApp全局对象。该对象就表示了应用程序本身!CWinApp的构造函数完成程序运行时的一些初始化工作!具体完成了哪些初始化工作呢?
8定义变量的时下划线表示所定义的变量是某各类的成员变量!
PVOID (任意类型指针)
33 MFC对资源的操作都是通过与其相应的类来完成的,如果想对某个资源或对象进行操作,可以在MSDN中索引该类,在该类中找到可以使用的函数进行操作!
图标,光标和背景是在涉及窗口类的涉及和注册时由MFC的底层代码帮助我们完成的,我们不肯能也不应该去修改MFC的底层代码!
消息中的参数WPARAM是一个四字节的无符号整形,在该参数的低端的两个字节中放置的是发送当前消息的菜单项,工具栏按钮或快捷键的命令ID,这样我们就可以通过宏HOWORD取得当前消息的命令ID了!
46 弹出MESSAGEBOX对话框时程序暂停执行,当点击了确定之后函数从MESSAGEBOX中返回,然后才能继续执行!要了解MESSAGEBOX的工作原理!MessageBox是一个模态对话框,模态对话框垄断了用户的输入,只有在对模态对话框执行操作后程序才能继续执行下去!
47 所有的窗口消息都伴随这一个窗口的句柄,我们可以使用消息中附带的这个窗口句柄!
48 整个应用程序只有一个主窗口过程和一个默认的窗口过程函数,我们可以自己添加窗口处理函数!添加自定义窗口处理函数的方法,在一定的条件先函数的执行转入自定义的窗口过程中!
56对视图,文档,应用程序,框架类的操作,一般都是通过获取其指针来调用成员函数实现的!
57 对于MFC自动创建的代码,在编程的过程中,只要知道编程的原理,就可以更具自己的需要进行修改!
58 视图类对象的生命周期从应用程序产生是就开始了,直到应用程序结束,视图类的对象是始终存在的!
59 向导在生成应用程序框架时,没有显示的创建视图类,框架类,文档类的对象,新添加的类也没有创建对象,对这些类的操作一般都是通过指针获取隐藏的类对象的指针,然后再对这些类进行操作的!
60 在自己的工程中引入一个已经编写好的新类的方法:以CBtn这个类为例:先将这个类的头文件和源文件复制到自己的工程所在的目录中去,在VC++的开发环境中打开工程,然后选择【Project\Add To Project\Files】菜单项,这是会弹出一个选择插入文件的对话框,找到自己想加入的文件,然后选中他们,单击OK就可以了!在以这个新添加的类作为类型关联一个成员变量时,在class wizard member variables 的下拉列表框中缺找不到这个新添加的类,这是我们可以采取的方法是:先随便选择一个类,单击OK完成新变量的添加,然后到到头文件中打开新增变量的定义处,手工将其类型修改为CBtn类!这是还需要修改包含类的头文件!
61 当程序运行时,MFC框架内部接受的无论是文档类指针,框架类指针,或者是视图类指针,他们都是指向派生类的指针!
62 当程序运行时,MFC框架内部的无论是文档指针,还是框架类指针,或者是视图类指针,他们都是指向派生类的指针的!
63 可以手动的让一个自定义的类派生于CObject类,只需在其头文件中将这个类的定义中使用派生类的定义方法就可以了!
64 定义一个用于绘图或者是文本输出的函数时,应该参照视图类的OnDraw函数,传递一个CDC*类型的指针,方便绘图操作!也可以在绘图函数中自己定义CDC*成员!
文档评论(0)