文档介绍:MFC 编程
第七章 Visual C++ 编程基础
1
3
2
Windows API 编程
Windows 程序运行机制
内容提要
1
Windows程序运行机制
Windows中的事件驱动与消息循环
Windows是一种典型的事件驱动运行机制;
DOS 应用程序显式地运用一个函数(比如gets)来取得输入;
Windows应用程序是等待Windows系统将输入传递给Windows应用程序的窗口,当窗口有输入时,窗口过程函数处理输入后将控制返回给Windows系统;
Windows系统以消息的形式将输入传给窗口过程;
2
的画图程序窗口中画一个矩形的消息传递和消息处理过程;
Windows应用程序在运行时就是不断地等待消息,处理消息,又等待消息这个过程循环往复直到程序运行结束时为止,一般称这个过程为消息循环。
Windows程序运行机制
3
消息和消息处理:
消息的结构MSG:
typedef struct tagMSG
{
HWND hwnd;
UINT message;
WPARAM wParam;
LPARAM lParam;
DWORD time;
POINT pt;
} MSG, *PMSG;
Windows程序运行机制
4
MSG数据成员含义:
1、hwnd:消息要发送到的应用程序窗口的句柄,如果是在一个有多个窗口的应用程序中用此数据成员可决定让哪个窗口接收消息;
2、message:是一个数值用于惟一标识一种消息类型;
3、wParam:是一个32位的消息数据成员它的确切意义取决于消息本身;
4、lParam:也是一个32位的消息数据成员它的确切意义也取决于消息本身;
5、time:消息放入消息队列中的时间,在这个数据成员中写入的并不是日期而是从Windows启动后所测量的时间值用于保持消息正确的顺序;
6、pt:消息被放入消息队列时的鼠标坐标;
Windows程序运行机制
5
被送往应用程序的消息将被应用程序窗口的窗口过程函数所接收,如程序员编写有相应的函数窗口过程函数将执行对应的函数;
一个消息函数只对应一个消息,每个消息都有一个专门的函数来处理;
;
Windows程序运行机制
6
:
消息映像指MFC类中将消息与消息处理函数联系起来形成一一对应的机制;
mdTarget派生的类都能处理消息都有相应的消息映像;
Windows程序运行机制
VC中源文件宏BEGIN_MESSAGE_MAP和END_MESSAGE_MAP之间的代码为消息映像代码如象下面程序片段:
BEGIN_MESSAGE_MAP(Cstep, CView)
//{{ ircleView)
ON_WM_LBUTTONDOWN()
ON_WM_LBUTTONLOCK()
ON_WM_LBUTTONUP()
ON_WM_MOUSEMOVE()
//}} AFX_MSG_MAP
END_MESSAGE_MAP()
利用ClassWizard
7
Windows API编程
Windows API(Windows Application Programming Interface) 是所有Windows应用程序的基础;
Windows应用程序通过调用API来请求操作系统完成一些低级服务;
应用程序的窗口图标菜单和对话框等都是由API来进行管理和维护的;
Windows API具有两种基本类型:Win16 API和Win32 API;
8
Windows API编程
WindowsSDK(Windows Software Development Kit)是一套帮助C++语言程序员创建Windows应用程序的工具,它包含:
1)大量的在线帮助帮助描述了Windows编程用到的函数消息结构宏及其他资源;
2)各种编程工具比如对话框编辑器及图标编辑器等;
3)Windows库及头文件;
4)使用C++语言编写的示例程序。
Win32API可以获得更高的效率,使用MFC更方便。
9
Windows API应用程序的组成
Windows API应用程序主要由入口函数WinMain和窗口函数构成,其中还包括各种数据类型、数据结构与函数;
入口函数WinMain():
WinMain函数是所有 Windows 应用程序的入口, 与一般 C 语言方式运行程序的 main()函数类似,功能为完成初始化操