chap3 MFC基本应用程序的建立.ppt
《chap3 MFC基本应用程序的建立.ppt》由会员分享,可在线阅读,更多相关《chap3 MFC基本应用程序的建立.ppt(58页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第第3章章 MFC基本应用程序的建立基本应用程序的建立3.1 Windows编程基础编程基础3.2 编制一个编制一个MFC应用程序应用程序3.3 使用使用MFC AppWizard3.4 使用类向导使用类向导3.1 Windows编程基础编程基础 3.1.1 简单的简单的Windows应用程序应用程序例例Ex_HelloMsg 一个简单的一个简单的Windows应用程序应用程序#include int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,LPSTR lpCmdLine,int nCmdShow)MessageBo
2、x(NULL,你好,我的你好,我的Visual C+世界!世界!,问候问候,0);return 0;Windows应用程序用程序以应用程序用程序以WinMain函数作为进入程函数作为进入程序的初始入口点。序的初始入口点。WinMain函数的原型:函数的原型:int WINAPI WinMain(HINSTANCE hInstance,/当前实例句柄当前实例句柄HINSTANCE hPrevInstance,/前一实例句柄前一实例句柄LPSTR lpCmdLine,/指向命令行参数的指针指向命令行参数的指针int nCmdShow)/窗口的显示状态窗口的显示状态句柄:标识句柄:标识Windows
3、资源资源(如菜单、图标、窗口等如菜单、图标、窗口等)和设和设备等对象的数据指针类型备等对象的数据指针类型3.1 Windows编程基础编程基础 3.1.1 简单的简单的Windows应用程序应用程序3.1 Windows编程基础编程基础 3.1.1 简单的简单的Windows应用程序应用程序每一个每一个C+Windows应用程序都需要应用程序都需要Windows.h头文件,它还包含了其他的一些头文件,它还包含了其他的一些Windows头文件。这些头文件定义了头文件。这些头文件定义了Windows的所有数据类型、函数调用、数据结构和符号的所有数据类型、函数调用、数据结构和符号常量。常量。程序中,
4、程序中,MessageBox是一个是一个Win32 API函数,函数,用来弹出一个消息对话框。该函数第一个参数用来弹出一个消息对话框。该函数第一个参数用来指定父窗口句柄,即对话框所在的窗口句用来指定父窗口句柄,即对话框所在的窗口句柄。第二、三个参数分别用来指定显示的消息柄。第二、三个参数分别用来指定显示的消息内容和对话框窗口的标题,最后一个参数用来内容和对话框窗口的标题,最后一个参数用来指定在对话框中显示的按钮。指定在对话框中显示的按钮。3.1 Windows编程基础编程基础 3.1.1 简单的简单的Windows应用程序应用程序例例Ex_HelloWin 一个完整的一个完整的Windows应
5、用程序应用程序#include LRESULT CALLBACK WndProc(HWND,UINT,WPARAM,LPARAM);/窗口过程窗口过程int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,LPSTR lpCmdLine,int nCmdShow)HWND hwnd;/窗口句柄窗口句柄 MSG msg;/消息消息 WNDCLASSwndclass;/窗口类窗口类 wndclass.style =CS_HREDRAW|CS_VREDRAW;wndclass.lpfnWndProc =WndProc;wndcla
6、ss.cbClsExtra =0;3.1 Windows编程基础编程基础 3.1.1 简单的简单的Windows应用程序应用程序 wndclass.cbWndExtra=0;wndclass.hInstance =hInstance;wndclass.hIcon=LoadIcon(NULL,IDI_APPLICATION);wndclass.hCursor =LoadCursor(NULL,C_ARROW);wndclass.hbrBackground=(HBRUSH)GetStockObject(WHITE_BRUSH);wndclass.lpszMenuName =NULL;wndclas
7、s.lpszClassName=HelloWin;/窗口类名窗口类名 3.1 Windows编程基础编程基础 3.1.1 简单的简单的Windows应用程序应用程序 if(!RegisterClass(&wndclass)/注册窗口注册窗口 MessageBox(NULL,窗口注册失败!窗口注册失败!,HelloWin,0);return 0;hwnd=CreateWindow(HelloWin,/窗口类名窗口类名 我的窗口我的窗口,/窗口标题窗口标题 WS_OVERLAPPEDWINDOW,/窗口样式窗口样式 CW_USEDEFAULT,/窗口最初的窗口最初的 x 位置位置 CW_USEDE
8、FAULT,/窗口最初的窗口最初的 y 位置位置 CW_USEDEFAULT,/窗口最初的窗口最初的 x 大小大小 CW_USEDEFAULT,/窗口最初的窗口最初的 y 大小大小3.1 Windows编程基础编程基础 3.1.1 简单的简单的Windows应用程序应用程序 NULL,/父窗口句柄父窗口句柄 NULL,/窗口菜单句柄窗口菜单句柄 hInstance,/应用程序实例句柄应用程序实例句柄 NULL);/创建窗口的参数创建窗口的参数 ShowWindow(hwnd,nCmdShow);/显示窗口显示窗口 UpdateWindow(hwnd);/更新窗口,包括窗口的客户区更新窗口,包括
9、窗口的客户区 /进入消息循环:当从应用程序消息队列中检取的消息是进入消息循环:当从应用程序消息队列中检取的消息是WM_QUIT时,则退出循环。时,则退出循环。while(GetMessage(&msg,NULL,0,0)TranslateMessage(&msg);/转换某些键盘消息转换某些键盘消息 DispatchMessage(&msg);/将消息发送给窗口过将消息发送给窗口过 程,这里是程,这里是WndProc 3.1 Windows编程基础编程基础 3.1.1 简单的简单的Windows应用程序应用程序 return msg.wParam;LRESULT CALLBACK WndPro
10、c(HWND hwnd,UINT message,WPARAM wParam,LPARAM lParam)switch(message)case WM_CREATE:/窗口创建产生的消息窗口创建产生的消息return 0;case WM_LBUTTONDOWN:3.1 Windows编程基础编程基础 3.1.1 简单的简单的Windows应用程序应用程序MessageBox(NULL,你好,我的你好,我的Visual C+世界!世界!,问候问候,0);return 0;case WM_DESTROY:/当窗口关闭时产生的消息当窗口关闭时产生的消息 PostQuitMessage(0);retu
11、rn 0;return DefWindowProc(hwnd,message,wParam,lParam);/执行默认的消息处理执行默认的消息处理3.1 Windows编程基础编程基础 3.1.1 简单的简单的Windows应用程序应用程序窗口过程函数窗口过程函数WndProc:接收和处理各种不同的消息:接收和处理各种不同的消息主函数主函数WinMain:(1)调用调用API函数函数RegisterClass注册应用程序的窗口类。注册应用程序的窗口类。(2)调用相关调用相关API函数创建和显示窗口,并进行其它必函数创建和显示窗口,并进行其它必要的初始化处理。要的初始化处理。(3)创建和启动应用
12、程序的消息循环。创建和启动应用程序的消息循环。(4)如果接收到如果接收到WM_QUIT消息,则退出应用程序。消息,则退出应用程序。3.1 Windows编程基础编程基础 3.1.1 简单的简单的Windows应用程序应用程序初始化应用程序初始化应用程序开始执行开始执行初始化并创建应用程序窗口初始化并创建应用程序窗口进入消息循环并获取一条消息进入消息循环并获取一条消息消息是否为消息是否为WM_QUIT?终止程序终止程序是是应用程序中处应用程序中处理了此消息?理了此消息?否否处理消息处理消息转送消息给窗口进行默认处理转送消息给窗口进行默认处理是是否否WindowsWindows应用程序的基本流程应
13、用程序的基本流程3.1 Windows编程基础编程基础 3.1.2 Windows编程特点编程特点Windows应用程序特性:应用程序特性:消息驱动机制消息驱动机制图形设备接口图形设备接口(GDI)基于资源的程序设计基于资源的程序设计动态链接库动态链接库进程和线程进程和线程3.1 Windows编程基础编程基础 3.1.2 Windows编程特点编程特点1.消息驱动机制消息驱动机制事件事件(Events)产生的消息产生的消息(Message)。接收消息、分发消息、处理消息接收消息、分发消息、处理消息消息驱动的机制是消息驱动的机制是Windows编程的最大特点。编程的最大特点。-当用户按下鼠标的
14、左键时系统就会发送当用户按下鼠标的左键时系统就会发送WM_LBUTTONDOWN消息消息-用户敲了一个字符键时系统就会发送用户敲了一个字符键时系统就会发送WM_CHAR消消息息-进行菜单选择或工具按钮单击等操作时,系统又会相进行菜单选择或工具按钮单击等操作时,系统又会相应地发送应地发送WM_COMMAND消息给相应的窗口等等消息给相应的窗口等等3.1 Windows编程基础编程基础 3.1.2 Windows编程特点编程特点2.图形设备接口图形设备接口(GDI)DOS环境中打印:用户必须根据打印机类型和环境中打印:用户必须根据打印机类型和指令规则向打印机输送数据。指令规则向打印机输送数据。Wi
15、ndows:提供一个抽象的接口,称为图形设:提供一个抽象的接口,称为图形设备接口备接口(Graphical Device Interface,简称,简称GDI)使得用户直接利用系统的使得用户直接利用系统的GDI函数就能方便实函数就能方便实现输入或输出,而不必关心与系统相连的外部现输入或输出,而不必关心与系统相连的外部设备的类型。设备的类型。3.1 Windows编程基础编程基础 3.1.2 Windows编程特点编程特点3.基于资源的程序设计基于资源的程序设计众多图形元素,例如光标、菜单、工具栏、位众多图形元素,例如光标、菜单、工具栏、位图、对话框等,每一个这样的元素都作为一种图、对话框等,每
16、一个这样的元素都作为一种可以装入应用程序的资源来存放。这些资源就可以装入应用程序的资源来存放。这些资源就像像C+程序中的常量一样,可以被编辑、修改,程序中的常量一样,可以被编辑、修改,也可以被其他应用程序所共享。也可以被其他应用程序所共享。Visual C+6.0中就提供这样的编辑器,可中就提供这样的编辑器,可“所所见即所得见即所得”地对这些不同类型的资源进行设计、地对这些不同类型的资源进行设计、编辑等。编辑等。3.1 Windows编程基础编程基础 3.1.2 Windows编程特点编程特点4.动态链接库动态链接库动态链接库:提供一些特定结构的函数,能被应用程序动态链接库:提供一些特定结构的
17、函数,能被应用程序在运行过程中装入和连接,且多个程序可以共享同一个在运行过程中装入和连接,且多个程序可以共享同一个动态链接库动态链接库优点:大大节省内存和磁盘空间优点:大大节省内存和磁盘空间 提高程序模块的灵活性提高程序模块的灵活性.DLL扩展名或扩展名或.EXE扩展名扩展名 -KERNEL32:处理存储器低层功能、任务和资源管理:处理存储器低层功能、任务和资源管理等等Windows核心服务;核心服务;-GDI32:提供图形设备接口,管理用户界面和图形绘:提供图形设备接口,管理用户界面和图形绘制,包括制,包括Windows元文件、位图、设备描述表和字体等元文件、位图、设备描述表和字体等 -US
18、ER32:负责窗口的管理,包括消息、菜单、光标、:负责窗口的管理,包括消息、菜单、光标、计时器以及其它与控制窗口显示相关的一些功能。计时器以及其它与控制窗口显示相关的一些功能。3.1 Windows编程基础编程基础 3.1.2 Windows编程特点编程特点5.进程和线程进程和线程进程:装入内存中正在执行的应用程序。进程进程:装入内存中正在执行的应用程序。进程包括私有的虚拟地址空间、代码、数据及其它包括私有的虚拟地址空间、代码、数据及其它操作系统资源。进程包括了一个或多个在进程操作系统资源。进程包括了一个或多个在进程上下文内运行的线程。上下文内运行的线程。线程:操作系统分配线程:操作系统分配C
19、PU时间的基本实体。线时间的基本实体。线程可以执行应用程序代码的任何部分,包括当程可以执行应用程序代码的任何部分,包括当前正在被其它线程执行的那些部分。同一进程前正在被其它线程执行的那些部分。同一进程的所有线程共享同样的虚拟地址空间、全局变的所有线程共享同样的虚拟地址空间、全局变量和操作系统资源。量和操作系统资源。3.1 Windows编程基础编程基础 3.1.3 Windows基本数据类型基本数据类型Windows常用的基本数据类型常用的基本数据类型3.1 Windows编程基础编程基础 3.1.3 Windows基本数据类型基本数据类型Windows常用的预定义句柄类型常用的预定义句柄类型
20、3.2 编制一个编制一个MFC应用程序应用程序基础类库基础类库(Microsoft Foundation Class Library,简称,简称MFC):把:把Windows编程规范中的大多编程规范中的大多数内容封装成为各种类,又称为数内容封装成为各种类,又称为MFC程序框架程序框架3.2 编制一个编制一个MFC应用程序应用程序 3.2.1 设计一个设计一个MFC程序程序例例Ex_HelloMFC 一个一个MFC应用程序应用程序#include/MFC头文件头文件class CHelloApp:public CWinApp/声明应用程序类声明应用程序类 public:virtual BOOL
21、InitInstance();CHelloApp theApp;/建立应用程序类的实例建立应用程序类的实例class CMainFrame:public CFrameWnd /声明主窗口类声明主窗口类 public:CMainFrame()3.2 编制一个编制一个MFC应用程序应用程序 3.2.1 设计一个设计一个MFC程序程序/创建主窗口创建主窗口 Create(NULL,我的窗口我的窗口,WS_OVERLAPPEDWINDOW,CRect(0,0,400,300);protected:afx_msg void OnLButtonDown(UINT nFlags,CPoint point);
22、DECLARE_MESSAGE_MAP();3.2 编制一个编制一个MFC应用程序应用程序 3.2.1 设计一个设计一个MFC程序程序/消息映射入口消息映射入口BEGIN_MESSAGE_MAP(CMainFrame,CFrameWnd)ON_WM_LBUTTONDOWN()/单击鼠标左键消息的映射宏单击鼠标左键消息的映射宏END_MESSAGE_MAP()/定义消息映射函数定义消息映射函数void CMainFrame:OnLButtonDown(UINT nFlags,CPoint point)MessageBox(你好,我的你好,我的Visual C+世界!世界!,问候问候,0);CFr
23、ameWnd:OnLButtonDown(nFlags,point);3.2 编制一个编制一个MFC应用程序应用程序 3.2.1 设计一个设计一个MFC程序程序BOOL CHelloApp:InitInstance()/每当应用程序首次每当应用程序首次执执行时都要调用的初始化函数行时都要调用的初始化函数 m_pMainWnd=new CMainFrame();m_pMainWnd-ShowWindow(m_nCmdShow);m_pMainWnd-UpdateWindow();return TRUE;3.2 编制一个编制一个MFC应用程序应用程序 3.2.1 设计一个设计一个MFC程序程序步骤
24、:步骤:(1)选择选择“文件文件”“新建新建”菜单命令,显示出菜单命令,显示出“新建新建”对话对话框。在框。在“工程工程”标签页面的列表框中,选中标签页面的列表框中,选中Win32 Application项,创建一个项,创建一个Ex_HelloMFC空应用程序项目。空应用程序项目。(2)再次选择再次选择“文件文件”“新建新建”菜单命令,在文件标签页面菜单命令,在文件标签页面左边的列表框中选择左边的列表框中选择C+Source File项,在右边的文件框中项,在右边的文件框中键入键入Ex_HelloMFC.cpp,单击,单击确定确定。(3)输入上面的代码。选择输入上面的代码。选择“工程工程”“设
25、置设置”菜单命令,在菜单命令,在出现的对话框中选择出现的对话框中选择“General”标签。然后在标签。然后在“Microsoft Foundation Classes”组合框中,选择组合框中,选择“Use MFC in a Shared DLL”,单击,单击确定确定按钮。按钮。(4)程序运行后,单击鼠标左键,就会弹出一个对话框,结果程序运行后,单击鼠标左键,就会弹出一个对话框,结果同同Ex_HelloWin。3.2 编制一个编制一个MFC应用程序应用程序 3.2.1 设计一个设计一个MFC程序程序3.2 编制一个编制一个MFC应用程序应用程序 3.2.2 理解程序代码理解程序代码映射一个消息
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- chap3 MFC基本应用程序的建立 MFC 基本 应用程序 建立
限制150内