


下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 福建龙岩第一中学2024~2025学年高一下册第一次月考数学试题
- 家庭临终关怀服务支持考核试卷
- 光缆通信在智能电网电力市场交易信息传输中的应用考核试卷
- 光刻工艺中的图案转移技术挑战考核试卷
- 印刷企业绿色采购成本效益分析考核试卷
- 农村物流配送效率影响因素及对策研究考核试卷
- 电感器在高频电路中的磁路损耗分析考核试卷
- 情商在激励团队中的作用考核试卷
- 企业多元化战略的执行与监控考核试卷
- 职业卫生法律法规遵守与违法责任分析考核试卷
- 2025云南中考历史真题及答案
- 四川省成都市蓉城联盟2024-2025学年高一下学期6月期末考试物理试题(含答案)
- 压轴训练:全等三角形(多解、动点、新定义型压轴)(原卷版)
- 2025年安庆望江县融媒体中心专业技术人员招聘考试笔试试题(含答案)
- 2025公文写作考试真题库(含答案)
- T/CCS 075-2023煤矿柔性薄喷材料喷涂施工技术要求
- 2025海南中考:政治必考知识点
- 吊装起重作业安全培训
- DLT 5035-2016 发电厂供暖通风与空气调节设计规范
- 中药学学习要点
- 合同到期不续签领失业金(2025年版)
评论
0/150
提交评论