下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、一个最简单的MFC程序框架剖析 首先在VC中(我使用的是VC2008)建立一个Win32应用程序,并且选择空项目。建立完成后,选择项目属性->配置属性->常规->MFC的使用选择在共享DLL中使用MFC。现在这个空项目中没有任何的文件。先新建一个.h文件:MyApp.h,并且加入以下代码:/ application classclass CMyApp : public CWinApppublic: virtual BOOL InitInstance()
2、;/ frame window classclass CMyFrame : public CFrameWndpublic: CMyFrame();protected: / "afx_msg" indicates that the next two functions are part
3、0;/ of the MFC library message dispatch system afx_msg void OnLButtonDown(UINT nFlags, CPoint point); afx_msg void OnPaint(); DECLARE_MESSAGE_MAP();复制代码然后建
4、立一个MyApp.cpp文件,加入以下代码:#include <afxwin.h> / MFC library header file declares base classes#include "myapp.h" CMyApp theApp; / the one and only CMyApp object BOOL CMyApp:InitInstanc
5、e() m_pMainWnd = new CMyFrame(); m_pMainWnd->ShowWindow(m_nCmdShow); m_pMainWnd->UpdateWindow(); return TRUE; BEGIN_MESSAGE_MAP(CMyFrame, CFrameWnd)
6、 ON_WM_LBUTTONDOWN() ON_WM_PAINT()END_MESSAGE_MAP()CMyFrame:CMyFrame() Create(NULL, _T("MYAPP Application"); void CMyFrame:OnLButtonDown(UINT nFlags, CPoint point) AfxMessageBox(_T(
7、"Left Button Clicked!"); /* TRACE("Entering CMyFrame:OnLButtonDown - %lx, %d, %dn", (long) nFlags, point.x, point.y);
8、160; */ void CMyFrame:OnPaint() CPaintDC dc(this); dc.TextOut(0, 0, "Hello, world!");复制代码Ctrl+F5运行程序,就是一个最简单的窗口,并且画了一个字符串:“Hello World!”,同时点击鼠标左键会弹出一个MessageBox。这就是不通过
9、应用程序向导我们自己构建的一个MFC应用程序,但是我们继承了MFC的基类,也就是在MFC的应用程序框架下的程序。 下面对这个程序框架详解:1,WinMain函数:每一个Windows应用程序要有一个入口函数,即WinMain函数。但是这里它已经隐藏在了MFC应用程序框架中了。2,CMyApp类:这个类的对象代表了这个应用程序,定义了全局对象theApp。基类CWinApp决定了theApp的主要行为。3,应用程序启动: 启动应用程序的时候,先要构造全局对象theApp,进入WinMain函数,并且WinMain寻找一个由CWinApp派生出的全局应用程序对象。4,成员函数CMyApp
10、:InitInstance:是一个虚函数。也就是基类CWinApp中也有这个函数。当WinMain函数找到应用程序对象theApp时,就调用它的虚拟成员函数InitInstance。这个函数就调用所需要的构造和显示应用程序的主窗口。派生的应用程序类(CMyApp)中必须覆盖InitInstance函数,应为基类(CWinApp)中的函数不知道我们要什么样的主窗口。5,成员函数CWinApp:Run:这个函数是CWinApp类的成员,它就是发送应用程序的消息到它的窗口,这样就保证了应用程序一直运行。在WinMain调用InitInstance后就调用Run函数。6,CMyFrame类:这个类的一
11、个对象就代表了应用程序的主框架窗口。构造函数调用基类CFrameWnd的成员函数Create的时候,Windows创建实际窗口结构。 ShowWindow和UpdateWindow函数也是基类的成员函数,调用来显示窗口。7,CMyFrame:OnLButtonDown函数:当触发了左键点击消息ON_WM_LBUTTONDOWN 时候的响应函数,它是CMyFrame的成员函数(注意的是它并不是基类的成员函数,也即不是虚函数,它使用了宏来把特定的消息映射到了派生类的成员函数。之所以MFC对Windows消息不使用虚函数,因为单单CWnd就要超过100个消息,每个消息都定义一个虚响应函数,那么每个其派生类都要顶一个虚函数调度表,即使大多消息不使用,
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026国航股份商务委员会京外各营销中心高校毕业生校园招聘6人笔试历年备考题库附带答案详解
- 2026四川长虹民生物流股份有限公司招聘货运专员岗位1人笔试历年备考题库附带答案详解
- 2026四川广安安创人力资源有限公司招聘协议制人员8人笔试历年备考题库附带答案详解
- 2026呼和浩特粮油收储有限公司招聘18名工作人员笔试历年备考题库附带答案详解
- 2026内蒙古鄂尔多斯市国源矿业开发有限公司招聘75人笔试历年典型考点题库附带答案详解
- 2026中煤蒙陕能源销售有限公司面向集团公司内部招聘1人笔试历年常考点试题专练附带答案详解
- 2026中国华电集团有限公司派驻审计处招聘6人笔试历年常考点试题专练附带答案详解
- 2026下半年浙江金华市兰溪市市属国企(兰创集团)招聘19人笔试历年备考题库附带答案详解
- 2025陕西电子信息集团光电科技有限公司招聘笔试历年难易错考点试卷带答案解析
- 2025鄂尔多斯市国源矿业开发有限责任公司社会招聘75人笔试历年常考点试题专练附带答案详解
- 成都未来科技城发展服务局2026年社会招聘笔试题库附参考答案详解【模拟题】
- 上海国际货币经纪有限责任公司招聘笔试题库2026
- 境外病人收治流程
- 肝局灶性结节性增生超声诊断课件
- 斗式提升机技术规范书
- 高速铁路测量技术培训
- 加油站工程工程施工组织设计方案
- NY 526-2002水稻苗床调理剂
- GA/T 1436-2017法庭科学刑事案件现场图示符号规范
- 金属材料及热处理说课-课件
- 口腔科医务人员职业暴露课件
评论
0/150
提交评论