MFC Windows应用程序设计——学习笔记【1】
来源:互联网 发布:话费好帮手软件 编辑:程序博客网 时间:2024/05/20 05:54
1. Windows API函数根据功能大体可以分为以下三大类型
- 窗口管理函数:实现窗口创建、移动和修改等功能;
- 图形设备函数:又称图形设备接口,实现图形的绘制及操作功能;
- 系统服务函数:实现与操作系统有关的一些功能。
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.消息分类:
从传输途径上看,消息大体可以分为两类:一种是需要进入消息队列的消息,称为队列消息,例如鼠标和键盘消息;另一种是不经消息队列而直接送达窗口的非队列消息,系统消息一般都是非队列消息。
- MFC Windows应用程序设计——学习笔记【1】
- MFC Windows程序设计学习笔记(第一章)
- MFC Windows程序设计学习笔记--滚动条
- MFC Windows程序设计学习笔记--菜单
- MFC Windows程序设计学习笔记--控件
- MFC应用程序设计(第二版)学习笔记
- MFC应用程序设计(第二版)学习笔记
- MFC Windows程序设计学习笔记--MFC集合类
- Windows程序设计学习笔记(1)—— Hello world
- 《Windows程序设计》学习笔记(1)
- Windows 程序设计学习笔记1
- MFC Windows程序设计学习笔记--鼠标和键盘
- MFC Windows程序设计学习笔记--文件和串行化
- MFC Windows 程序设计(1)
- MFC windows应用程序设计(一)——Windows 应用程序的基本概念
- MFC学习笔记(1)——Windows程序基础
- mfc笔记: 《MFC Windows程序设计》Shape程序
- Windows程序设计学习笔记
- POJ1426_Find The Multiple_测试出真知
- Dword、LPSTR、LPWSTR、LPCSTR、LPCWSTR、LPTSTR、LPCTSTR
- Java中的循环结构
- 正则表达式基本语法学习
- 从cin>>ch, cin.get(ch)看C++的参数引用
- MFC Windows应用程序设计——学习笔记【1】
- list.h 简单运用
- Linux进程间通信——使用共享内存
- python爬虫
- 我也说说ThreadLocal
- git多平台换行设置引起的问题
- 32字产品口诀
- smail语法简析(2)
- STL 队列