130 likes | 281 Views
第4章 MFC 基本应用程序的建立 (一). 4.1 Windows 编程基础 4.2 编制一个 MFC 应用程序 4.3 使用 MFC AppWizard 4.4 使用 ClassWizard. 4.1 Windows 编程基础. Windows 程序的内部运行原理 简单的 Windows 应用程序. 一、 Windows 程序的内部运行原理. Windows 应用程序、操作系统、计算机硬件之间的相互关系. 应用程序. 消息队列. 3. 4. 操作系统. 1. 2. 输入输出设备. 1 表示操作系统能够操纵输入输出设备,已完成某种特定的操作。
E N D
第4章 MFC基本应用程序的建立(一) • 4.1 Windows编程基础 • 4.2 编制一个MFC应用程序 • 4.3 使用MFC AppWizard • 4.4 使用ClassWizard
4.1 Windows编程基础 • Windows程序的内部运行原理 • 简单的Windows应用程序
一、Windows程序的内部运行原理 Windows应用程序、操作系统、计算机硬件之间的相互关系 应用程序 消息队列 3 4 操作系统 1 2 输入输出设备
1 表示操作系统能够操纵输入输出设备,已完成某种特定的操作。 • 2 表示操作系统能够感知输入输出设备状态的变化。 • 3 表示应用程序可以通知操作系统执行某个具体的动作。 • 4 表示操作系统能够将输入输出设备状态的变化上传给应用程序。
关于Windows API • 应用程序是如何通知操作系统执行某个具体的动作? • 操作系统把它所能够完成的功能以函数的形式提供给应用程序使用,应用程序对这些函数的调用就叫做系统调用,这些函数的集合就是Windows操作系统提供给应用程序编程的接口(Application Programming Interface),简称Windows API。
关于消息及消息队列 • 操作系统是怎样将感知到的事件传递给应用程序的? • 通过消息机制(Message)来实现的。操作系统将每个事件(Event)都包装成一个称为消息的结构体MSG来传递给应用程序。
MSG结构定义(参见MSDN) typedef struct tagMSG{ HWND hwnd; UINT message; WPARAM wParam; LPARAM lParam; DWORD time; POINT pt; }MSG;
二、Windows应用程序Ex_HelloWin • 每一个用C/C++编写的Windows应用程序都需要包含windows.h头文件。 • 两个基本函数的程序结构 • WinMain函数 • 窗口过程函数WndProc用来接收和处理各种不同的消息。
WinMain函数 • WinMain函数的原型: int WINAPI WinMain ( HINSTANCE hInstance, //当前实例句柄 HINSTANCE hPrevInstance, //前一实例句柄 LPSTR lpCmdLine, //指向命令行参数指针 int nCmdShow //窗口的显示状态 )
关于句柄(handle) • 句柄(handle):一个标识Windows资源(如选单、图标、窗口等)和设备等对象的变量,或者是一个对操作系统资源的间接引用。 • 操作系统要管理和操作这些资源都是通过句柄来找到对应的资源。按资源的类型,又可将句柄细分为图标句柄(HICON) 、光标句柄(HCURSOR)、窗口句柄(HWND)、应用程序实例句柄(HINSTANCE)等各种类型的句柄。操作系统给每一个窗口指定的一个唯一的标识号即窗口句柄。
WinMain函数要完成的几个步骤 • 设计一个窗口类(定义) • 注册窗口类 • 创建窗口 • 显示和更新窗口 • 消息循环
4.2 编制一个MFC应用程序俄Ex_HelloMFC • MFC(Microsoft Foundation Class Library),微软基础类库。MFC把传统的Windows编程规范中的大多数内容封装成为各种类,是程序员从繁杂的编程中解脱出来,提高编程和代码效率。
使用afxwin.h来代替头文件windows.h • 应用程序类CWinApp调用WinMain以及实例的初始化。 • 自动查找应用程序类CHelloAPP(从CWinApp派生)的全局变量theApp,然后自动调用CHelloApp的虚函数InitInstance。 • InitInstance函数完成主窗口的创建、显示和更新。 • 消息映射机制