- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
浅出MFC设计part3
看一下孙鑫的VC++教程――数据库那部分的!!
第五章 总观Application Frameword
什么是Application Framework
为什么使用Application Framework
关于Application Framework,class Library,GUI toolkit
纵览MFC
General Purpose classes
Windows API classes
这是MFC声名最著的一群类别。如果你去看源代码,就会看到这些类别的成员函数所对应的各个windows API函数。
Application framework classes
High level abstractions
视觉性UI对象属于此类,例如工具栏CToolBar,状态列CStatusBar,对话框列CDialogBar。加强型的CView也属于此类,如可卷动的ScrollView,以对话框为基础的CFormView,小型文字编辑器CEditView,树状结构的CTreeView,支持RTF文件格式的CRichEditView等等
Afx全局函数
C++并不是纯种的对象导向语言(SmallTalk和java才是)。所以,MFC之中得以存在有不属于任何类别的全域函数,它们统统在函数名称开头冠以Afx
MFC宏(macros)
MFC数据类型(data type)
下面所列的这些数据类型,常常出现在MFC之中,其中的绝大部分都 和一般的Win32程序(SDK程序)所用的相同。
下面这些是和Win32程序使用的数据类型:
下面这些是MFC独特的数据类型
前面所说那些MFC数据类型与C++语言数据类型之间的对应,定义于;WINDEF.H中。
Eg:
。。。。
第六章 MFC程序的生死因果
不二法门:熟记MFC类别的阶层架构
需要什么函数库
这里要注意静态联结MFC函数库与动态联结MFC函数库的区别,动态联结的话,函数库在机器上,如果将程序移植到另一台机器,那台机器上如果没有相应的函数库,就会出错。
而静态联结,意味着把应用程序需要的函数库全部拷贝到应用程序目录下,这样程序移植的时候,把需要的函数库也移植了,就不会出错。
需要什么头文件
简化的MFC程序架构――以Hello MFC为例
Hello程序源代码
MFC程序的来龙去脉(causal relations)
CWinApp――取代WinMain的地位
。。。。。。。
。。。。。
CFrameWnd――取代WndProc的地位
在MFC里面,似乎应该是在CWnd类里有一个WindowProc这个类,应该就是这个函数来作为窗口回调函数,因为所有的窗口回调函数都继承自CWnd类,CFrame类也是的。
在MFC中,为了让程序更加结构化,更容易理解和维护,利用了两个宏来处理消息映射:DECLARE_MESSAGE_MAP和BEGIN_MESSAGE_MAP,见前面第三章。
程序运行第一步:引爆器――Application Object
从这一节以下,将以此图解释MFC程序的激活,运行与结束,不同小节的图将标示出当时的程序进行状况
程序运行第二步:隐晦不明的WinMain
主要动作:
tWinMain调用AfxWinMain,AfxWinMain调用AfxWinInit
在这个过程中, tWinMain的参数hInstance经过AfxWinMain传给AfxWinInit,然后在AfxWinInit中利用传进来的参数对theApp对象进行初始化(利用全局函数AfxGetApp)
在AfxWinInit中除了对theApp对象进行初始化之处,还调用AfxInitThread函数对线程进行初始化。
程序运行第三步:AfxWinInit――AFX内部初始化动作
程序运行第四步:CWinApp::InitApplication
程序运行第五步:CMyWinApp::InitInstance
程序运行第六步:CFramWnd::Create产生主窗口(并先注册窗口类别)
小结:
在MFC中,应用程序窗口的产生,必须经历窗口类的注册-》创建-》显示。
这一系列的动作是通过theApp-InitInstance()函数来组织调用的。PS:即在InitInstance里做了好多的工作,调用了相关的函数,这些函数就有窗口类的注册,窗口的创建和窗口的显示工作。
窗口类的注册动作,MFC给我们提供的接口是各个窗口类的PreCreateWindow()函数,
BOOL CStudentInfoView::PreCreateWindow(CREATESTRUCT cs)
利用这个结构体参数,对窗口的样式进行设定,这个结构体如下:typedef struct tagCREATESTRUCT {
文档评论(0)