下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 训练心得体会(27篇)
- 自己对自己的中考寄语
- 考点巩固卷14交通运输布局与区域发展(解析版)
- 2024年度山西省安全员之C证(专职安全员)自测模拟预测题库
- 2024年度年福建省安全员之A证(企业负责人)综合练习试卷B卷附答案
- 2024年度山西省安全员之C证(专职安全员)每日一练试卷A卷含答案
- 2024年度山西省安全员之B证(项目负责人)题库综合试卷A卷附答案
- 机动车检测站保证公正性和独立性措施制度
- 判断推理技巧课程设计
- 儿童保健服务工作实施方案
- 表C5-1-1隐蔽工程验收记录
- (完整word版)密封条模版
- 市政道路开口施工方案(共12页)
- 学习物业工程维修岗位技能竞赛方案
- 最新教代会会场背景图片
- 生产部岗位技能矩阵图
- 跟踪审计项目现场驻点工作的内容及要求
- 定语从句知识结构图解
- (完整版)博物馆陈列布展工程施工方案
- 产品标签模板
- 成立招投标领导小组通知
评论
0/150
提交评论