- 1、本文档共84页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
MFC编程基础-- 水滴整理分享 永久
public: virtual ~CWinApp(); DECLARE_MESSAGE_MAP() }; 虽然在CWinApp类定义中未见到WinMain函数,但是我们见到了以下几个虚函数,如: InitApplication(); InitInstance(); Run() 下面再来看看CFrameWnd的定义: class CFrameWnd : public CWnd { DECLARE_DYNCREATE(CFrameWnd) // Constructors public: static AFX_DATA const CRect rectDefault; CFrameWnd(); BOOL LoadAccelTable(LPCTSTR lpszResourceName); BOOL Create(LPCTSTR lpszClassName, LPCTSTR lpszWindowName, DWORD dwStyle = WS_OVERLAPPEDWINDOW, const RECT rect = rectDefault, CWnd* pParentWnd = NULL, LPCTSTR lpszMenuName = NULL, DWORD dwExStyle = 0, CCreateContext* pContext = NULL); // Implementation public: virtual ~CFrameWnd(); protected: virtual BOOL PreCreateWindow(CREATESTRUCT cs); virtual BOOL OnCommand(WPARAM wParam, LPARAM lParam); virtual void PostNcDestroy(); // default to delete this.… //{{AFX_MSG(CFrameWnd) // Windows messages afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct); afx_msg void OnDestroy(); afx_msg void OnClose(); friend class CWinApp; }; 在CFrameWnd中,afx_msg表示后面的成员函数是消息处理函数。其中,有下列三个函数: afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct); afx_msg void OnDestroy(); afx_msg void OnClose(); 这三个消息处理函数分别处理以下窗口消息: 消息处理函数 消息 OnCreate() WM_PAINT OnDestroy() WM_DESTROY OnClose() WM_CLOSE 8.3.2 MFC应用程序的启动流程 下面是Mymfc程序的启动流程,如图8-17所示。 图8-17 Mymfc程序流程 需要解释的地方有以下几点: (1) 应用程序类:CWinApp的派生类,该类的每一个对象代表一个应用程序。程序中默认定义一个全局的对象,即theApp。 (2) Main函数:启动应用程序时,Windows调用应用程序框架内置的WinMain函数,WinMain寻找由CWinApp派生出的全局构造的应用程序对象theApp。 (3) 函数InitInstance:当WinMain函数找到应用程序对象theApp时,它调用虚成员函数InitInstance,这个成员函数调用所需的构造动态(在程序运行时)创建主窗口对象、视图对象和文档对象,以及主框架窗口和视图窗口,并显示应用程序的主框架窗口和视图窗口。 (4) 成员函数Run:函数Run隐藏在基类CWinApp中,它负责从消息队列中读取应用程序的消息到窗口,以保持应用程序的正常运行。在WinMain调用InitInstance之后,便调用Run函数。 (5) 成员函数ExitInstance:如果用户通过关闭主框架窗口来关闭应用程序,这个操作就将激发一系列事件的发生,包括从Run中退出,从WinMain中退出和应用程序对象的析构。 实际的Mymfc程序或者MFC应用程序的流程比Win32程序要复杂许多,主要差别在于以下几点: (1) 程序的主函数名为全局函数AfxWinMain()而不是WinMain()。
文档评论(0)