实验3应用程序基本框架.doc
上传人:qw****27 上传时间:2024-09-12 格式:DOC 页数:7 大小:227KB 金币:15 举报 版权申诉
预览加载中,请您耐心等待几秒...

实验3应用程序基本框架.doc

实验3应用程序基本框架.doc

预览

在线预览结束,喜欢就下载吧,查找使用更方便

15 金币

下载此文档

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

实验3应用程序基本框架姓名:吕景路学号20090810320实验目的:掌握MFC的基础知识和类库的组织结构掌握简单的MFC应用程序框架掌握MFC的消息映射和消息处理函数掌握MFC的AppWizard生成的应用程序基本框架结构实验内容:在VC++的Windows编程中,主要有两种方法:一种是利用API函数;另一种是利用Microsoft提供的MFC类库。从上节课的内容我们可以看到,利用WindowsAPI函数进行编程时,用户需要编写大量的代码,编程的工作量较大。本节介绍另外一种编程方法,利用MFC和应用程序向导(AppWizard)来编写Windows应用程序。即首先使用AppWizard生成应用程序的基本框架,然后用ClassWizard来建立应用程序的类、消息映射、消息处理函数或定义控件的属性、事件和方法,最后把应用程序所要求的功能添加到类中。MFC常用类的体系结构如上图说明CObject类是几乎所有MFC类的基类,几乎所有的MFC类都由它直接或间接派生。CCmdTarget类是MFC中开始具有消息循环和消息处理能力的基类,所有的能进行消息循环和消息处理的类都由它派生。CCmdTarget类派生了CWinThread(线程类)、CWnd(窗口类)、CDocument(文档类)和CDocTemplate(文档模板类)。CWinThread派生了CWinApp(应用程序类)、CWnd类派生了CFrameWnd(框架窗口类)和CView(视图类)。简单用程序框架是由CWinApp类和CFrameWnd类搭建的。文档/视图的应用程序框架是由CWinApp类、CFrameWnd类、CView类、CDocument类和CDocTemplate类搭建的。例1、简单应用程序框架举例(ex41)建立一个Win32Application类型的工程,工程名为ex41添加源文件(.cpp文件)。#include<afxwin.h>//头文件,有AFX小组的影子classCMyApp:publicCWinApp//派生自己的应用程序类CMyApp{public:virtualBOOLInitInstance();//重写CWinApp中的虚拟函数InitInstance()};BOOLCMyApp::InitInstance()//InitInstance()函数的定义{CFrameWnd*p=newCFrameWnd;//生成窗口类CFrameWndp->Create(0,"MFC");//创建窗口p->ShowWindow(SW_NORMAL);//显示窗口p->UpdateWindow();//更新窗口AfxGetApp()->m_pMainWnd=p;//指明应用程序的主窗口returnTRUE;}CMyAppmyapp;//生成应用程序类对象myapp,程序由此开始执行选择菜单Projects->Settings,在打开的对话框中选择UseMFCinaStaticLibrary或UseMFCinaSharedDLL,表示选择类库的使用方式。编译链接、运行后会出现一个空白的窗口,程序尚不能对任何消息做出反应,表明程序没有消息处理能力。例2、为例1添加MFC消息映射和消息处理函数(ex42)#include<afxwin.h>//头文件,有AFX小组的影子classCMyApp:publicCWinApp//派生自己的应用程序类CMyApp{public:virtualBOOLInitInstance();//重写CWinApp中的虚拟函数InitInstance()};classCMainWnd:publicCFrameWnd{protected:afx_msgvoidFunction1(WPARAMwParam,LPARAMlParam){MessageBox("左键单击");}afx_msgvoidFunction2(WPARAMwParam,LPARAMlParam){MessageBox("右键单击");}DECLARE_MESSAGE_MAP();};BEGIN_MESSAGE_MAP(CMainWnd,CFrameWnd)ON_MESSAGE(WM_LBUTTONDOWN,Function1)ON_MESSAGE(WM_RBUTTONDOWN,Function2)END_MESSAGE_MAP()BOOLCMyApp::InitInstance()//InitInstance()函数的定义{CMainWnd*p=newCMainW