付费下载
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- (正式版)DB37∕T 3087-2017 《猪伪狂犬病病毒gE基因PCR检测技术》
- 产科护理中的临床决策支持
- 吉林省长春市名校联考2026届初三入学调研语文试题(3)试卷含解析
- 清远市重点中学2026届初三第二学期调研测试(一)英语试题含解析
- 2026年山东省聊城阳谷县联考中考模拟冲刺卷(提优卷)(二)语文试题理试题含解析
- 江苏省镇江市润州区2026届初三第一次调研联考语文试题试卷含解析
- ICU患者呼吸道管理及护理
- 江西省鹰潭市贵溪市重点名校2026届初三5月第三次周考语文试题含解析
- 浙江省台州市椒江区2026届初三第二次诊断性考试语文试题试卷含解析
- 安全生产管理方案
- 服务外包社会化现金清分要求
- 小学数学教学评一体化的教学策略
- GB/T 35605-2024绿色产品评价墙体材料
- DB32T-政务“一朵云”安全管理体系规范 第1部分:安全运行监测
- 有一男孩一女两个孩子有同财产、无共同债务的离婚协议书
- 混凝土工程合同模板
- 高温气冷堆先进燃料元件研发
- 住宅小区物业管理服务工作清单
- 椎管内麻醉课件
- 新教科版六年级科学下册教学计划
- 应征入伍服兵役高等学校学生国家教育资助申请表
评论
0/150
提交评论