MFC中CWinApp类具有哪些功能
展开全部
theApp是全局变量, 在进入程序入口这前已实例化了,这是基本常识啊.
cwinapp它派生自cwiinthread,c++的多态,就是利用基类来表达子类的行为.
mfc框架指的是程序入口_afxwinmain里面那段代码.基于对话框,单文档,多文档,都用得是这段代码.而不同的特性,则是靠实际派生类重载virtual函数来实现的(也就是所谓的多态的行为),
这是其一.
其二,main只是一个架子,对于一个框架程序来说,还是远远不够的.所以v s的向导在cwinapp派生类重载了相关的函数,完成了一切窗口建立所必需的流程(建立窗口类,注册窗口类,创建窗口等等).了解到这一点,用mfc编程就相当安逸了.
但是,mfc并不是如此简单,它相比传统的win32窗口建立多了点变化.问题就出在win32消息太多了,不可能为窗口类去定义所有的消息处理用virtual函数,所以引入消息映射表.
所以在窗口创建前,要放hook,保证各个相关都有机会去响应消息.这是很好的设计.
----------
以后你接触一些大程序的架构,你都能找到mfc架构的影子.其实这就是编程技法.看多了,你也会这么用设计的.
好好看下各向导下,InitInstance()提供的实现,你会找到答案的.
cwinapp它派生自cwiinthread,c++的多态,就是利用基类来表达子类的行为.
mfc框架指的是程序入口_afxwinmain里面那段代码.基于对话框,单文档,多文档,都用得是这段代码.而不同的特性,则是靠实际派生类重载virtual函数来实现的(也就是所谓的多态的行为),
这是其一.
其二,main只是一个架子,对于一个框架程序来说,还是远远不够的.所以v s的向导在cwinapp派生类重载了相关的函数,完成了一切窗口建立所必需的流程(建立窗口类,注册窗口类,创建窗口等等).了解到这一点,用mfc编程就相当安逸了.
但是,mfc并不是如此简单,它相比传统的win32窗口建立多了点变化.问题就出在win32消息太多了,不可能为窗口类去定义所有的消息处理用virtual函数,所以引入消息映射表.
所以在窗口创建前,要放hook,保证各个相关都有机会去响应消息.这是很好的设计.
----------
以后你接触一些大程序的架构,你都能找到mfc架构的影子.其实这就是编程技法.看多了,你也会这么用设计的.
好好看下各向导下,InitInstance()提供的实现,你会找到答案的.
展开全部
CWinApp为应用程序类
MFC 中的主应用程序类封装用于 Windows 操作系统的应用程序的初始化、运行和终止。基于框架生成的应用程序必须有且仅有一个从 CWinApp 派生的类的对象。在创建窗口之前先构造该对象。
CWinApp 是从 CWinThread 派生的,后者表示可能具有一个或多个线程的应用程序的主执行线程。在最新版本的 MFC 中,InitInstance、Run、ExitInstance 和 OnIdle 成员函数实际位于 CWinThread 类中。此处将这些函数作为 CWinApp 成员来探讨,因为探讨所关心的是对象作为应用程序对象而不是主线程的角色。
MFC 中的主应用程序类封装用于 Windows 操作系统的应用程序的初始化、运行和终止。基于框架生成的应用程序必须有且仅有一个从 CWinApp 派生的类的对象。在创建窗口之前先构造该对象。
CWinApp 是从 CWinThread 派生的,后者表示可能具有一个或多个线程的应用程序的主执行线程。在最新版本的 MFC 中,InitInstance、Run、ExitInstance 和 OnIdle 成员函数实际位于 CWinThread 类中。此处将这些函数作为 CWinApp 成员来探讨,因为探讨所关心的是对象作为应用程序对象而不是主线程的角色。
参考资料: http://baike.baidu.com/view/624712.htm
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询