Windows编程基础回顾(一)

Windows编程基础回顾(一)

程序设计领域里,没一个人都想飞。
但是,还没学会走之前,连跑都别想!1

本篇文章作为MFC系列的开场,将仅涉及一些Windows编程的基础知识。
在使用visual C++开发时,主要使用两种方法,一种是Windows提供的Windows API( Application Programming Interface 应用程序编程接口 ),另一种是Microsoft提供的MFC类库。
Windows API 是 Windows 系统和 Windows 应用程序间的标准程序接口。为应用程序提供系统的各种特殊函数及数据结构定义。
利用Windows API 函数额 MFC 类库编写 Windows应用程序需要首先了解以下内容:

1.窗口

对于几乎所有的计算机使用者来说,窗口都不是一个陌生的角色。还需要简单了解一下的是,窗口是 Windows 应用程序的基本操作单元,是应用程序与用户之间交互的接口环境,也是系统管理应用程序的基本单位。

2.事件驱动

Windows 程序的进行依靠外部发生的事件来驱动。外部发生的事件发生的信息通过作为消息传递给程序。程序不断等待任何可能的输入,然后做出判断,然后做适当的处理,因此,每一个Windows程序都应该有一个这样的回路:

MSG msg;
while (GetMessage(&msg, NULL, NULL, NULL, NULL))
{
	TranslateMessage(&msg);		// 将消息的虚拟键转换为字符信息。
	DispatchMessage(&msg);		// 将消息传送到指定的窗口函数。
}

Windows程序的执行顺序取决于事件的发生顺序,程序的执行顺序是由顺序产生的消息驱动的。程序员可以针对消息类型编写程序以处理接收的消息,或者发出其他消息以驱动其他程序。

3.句柄

句柄(handle)是Windows编程的基础,一个句柄是指Windows使用的一个唯一的 PVOID(p=Pointer void*) 型数据,是一个 4 字节长的数值,用于标识应用程序中不同的对象和同类对象中不同的实例,诸如一个窗口、按钮、图标、滚动条、输出设备或文件等。以下是部分句柄类型及说明

句柄类型说明
HWND标识窗口句柄
HINSTANCE标识当前实例句柄
HCURSOR标识光标句柄
HFONT标识字体句柄
HPEN标识画笔句柄
HBRUSH标识画刷句柄
HDC标识设备环境句柄
HBITMAP标识位图句柄
HICON标识图标句柄
HMENU标识菜单句柄
HFILE标识文件句柄

4.消息

Windows 应用程序利用 Windows 消息与其他的 Windows 应用程序及 Windows 系统进行信息交换。消息可以分为由硬件装置所产生的消息,放在系统队列中,以及由 Windows 系统或其他 Windows 程序传送过来的消息,放在程序队列中。然而对应用程序来说,消息来自哪里、放在哪里并不十分重要。
在 Windows 中,消息用一个结构体 MSG 来表示,它是Windows内定的一种资料格式:

typedef struct tagMSG
{
	HWND hwnd;			// hwnd 是用以检索消息的窗口句柄,若此参数为 null,则可以检索所有驻留在消息队列中的消息。
	UINT message;		// message 是代表一个消息的消息值,每个 Windows 消息都有一个消息值,该值由 windows.h 头文件中的宏定义来标识
	WPARAM wParam;		// 附加信息
	LPARAM lParam;		// 附加信息
	DWORD time;			// 指定消息送至队列的时间
	POINT pt;			// 消息发送时屏幕光标的位置。
} MSG;

其中 pt 的数据类型 POINT 也是一个内定好的结构体:

typedef struct tagPOINT
{
	LONG x;
	LONG y;
} POINT;

5.消息分类 和 应用程序常用消息

这部分内容对于初学者来说,可以当做字典一样,碰到了翻出来看一看,以便于理解将会遇到的许多炫酷的名称。

消息的分类:不同的前缀符号经常用于消息宏识别消息附属的分类:
· BM 表示按钮控件消息。
· CB 表示组合框控件消息。
· DM 表示默认下压式按钮空间消息。
· EM 表示编辑控件消息。
· LB 表示列表框控件消息。
· SBM 表示滚动条控件消息。
· WM 表示窗口消息。

应用程序常用消息:
WM_LBUTTONDOWN:单击鼠标左键
WM_KEYDOWN:按下一个非系统键,wParam 为按下键的虚拟键码,lParam 记录了案件的重复次数、扫描码、转移代码、先前键的状态等信息。
WM_CHAR:也是按下一个非系统键,wParam 为按键的 ASCLL 码,lparam 的意义与上同
WM_CREATE:由 CreateWindow 函数发出的消息。
WM_CLOSE:关闭窗口
WM_DESTROY:消除窗口时由 DestroyWindow 函数发出此消息
WM_QUIT:退出应用程序时由 PostQuitMessage 函数发出的消息。
WM_PAINT:当发生用户区移动或显示事件、用户窗口改变大小的事件、程序通过滚动条滚动窗口时,均产生一条 WM_PAINT 消息。

总结

本篇文章仅仅是概述了 Windows 应用程序设计的非常基础的内容的一小部分,就像本篇第一段引用的话一样,余下的相当多的“走”的内容还需要更多的时间进行学习。


  1. 摘自:深入浅出MFC——侯捷。 ↩︎

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值