MFC Windows应用程序设计——学习笔记【1】

来源:互联网 发布:话费好帮手软件 编辑:程序博客网 时间:2024/05/20 05:54

1. Windows API函数根据功能大体可以分为以下三大类型

  1. 窗口管理函数:实现窗口创建、移动和修改等功能;
  2. 图形设备函数:又称图形设备接口,实现图形的绘制及操作功能;
  3. 系统服务函数:实现与操作系统有关的一些功能。

2. 句柄:在Windows应用程序中除了普通变量之外的诸如窗口、按钮、滚动条等复杂的程序对象和实例的标识。不同Windows对象具有不同的类型,常用句柄类型见下表1。

表1:常用的句柄类型

句柄类型

说明

句柄类型

说明

HWND

窗口句柄

HDC

图形设备环境句柄

HINSTANCE

当前程序应用实例句柄

HBITMAP

位图句柄

HCURSOR

光标句柄

HICON

图标句柄

HFONT

字体句柄

HMENU

菜单句柄

HPEN

画笔句柄

HFILE

文件句柄

HBRUSH

画刷句柄



3. 基本数据类型的别名:为提高程序程序的可读性(凡是Windows自定义数据类型的关键字都要大写)

typedef unsigned long DWORD;

typedef unsigned char BYTE;

typedef unsigned short WORD;

typedef float FLOAT;

typedef unsigned int UINT;

typedef int BOOL;

4. 事件与消息:Windows应用程序靠事件触发产生响应,事件由各种信息描述,称为消息,消息结构定义如下:

typedef struct tagMSG

{

HWND hwnd;             // 产生消息的窗口句柄

UINT    message;       // 消息标识码

WPARAM wParam;   // 消息的附加信息 1

LPARAM  lParam;      // 消息的附加信息 2

DWORD  time;           // 消息进入消息队列的时刻

POINT point;              // 表示发送该消息时光标的位置

}

5. 消息循环:系统为每个应用程序都建立了一个叫做消息队列的存储空间,在程序的运行过程中如果发生了一个事件,Windows就会把这个事件对应的消息送入消息队列等待使用;应用程序可以通过调用Windows提供的API函数GetMessage()从消息队列中获取消息,并利用GetMessage()函数的返回值(当获取消息时,该函数返回TRUE,否则返回FALSE)组织一个循环,从而可以不断从消息队列获取消息,一旦获取了一个消息,就把这个消息发送给系统。

系统会根据消息中的hwnd找到应该接收消息的程序窗口,并根据窗口提供的信息,以消息为参数来调用一个用户编写的叫做“窗口函数”的函数。在窗口函数中以消息中的消息标识message为依据查找并执行该消息所对应的程序段,对消息进行处理。

处理完毕后,只要该消息不是终止应用程序消息,则会立即返回消息循环,以等待获取下一条消息。Windows应用程序就这样周而复始进行循环,直至用户发出结束应用程序的消息。

==》windows应用程序的运行是消息驱动的。

6.消息分类:

从传输途径上看,消息大体可以分为两类:一种是需要进入消息队列的消息,称为队列消息,例如鼠标和键盘消息;另一种是不经消息队列而直接送达窗口的非队列消息,系统消息一般都是非队列消息。


0 0
原创粉丝点击