02MFC基础 - 图文(7)

2019-01-26 17:05

typedef long LONG; // 长整数(32位有符号整数)

typedef unsigned long DWORD; // 双字(32位无符号长整数) // __int64为微软在Visual C++中定义的表示64位整数的C++扩展关键字 typedef __int64 LONGLONG; // 长长整数(64位整数)

typedef unsigned __int64 ULONGLONG; // 无符号长长整数(64位无符号整数)

2.指针与参数类型

typedef unsigned int UINT_PTR; // 无符号整数转换为指针 typedef long LONG_PTR; // 长整数转换为指针 typedef UINT_PTR WPARAM; // 窗口参数 typedef LONG_PTR LPARAM; // 长(整数)参数 typedef LONG_PTR LRESULT; // 长(整数)结果

3.颜色类型

typedef DWORD COLORREF; // 颜色引用0x00bbggrr

4.常量定义

#define NULL 0 // 空指针(C++) #define NULL ((void *)0) //空指针(C)

#define FALSE 0 // 假(标准C++中的对应关键字为false) #define TRUE 1 // 真(标准C++中的对应关键字为true)

5.句柄类型

在Windows API中,还定义了若干作为对象引用的句柄(handle):

typedef void *HANDLE; // 句柄(通用指针,一般为一个DWORD值) HANDLE // 对象句柄 HBITMAP // 位图句柄 HBRUSH // 刷句柄

31

HCURSOR // 光标句柄

HDC // DC(device context,设备上下文)句柄 HFILE // 文件句柄 HFONT // 字体句柄 HGLOBAL // 全局内存块句柄 HICON // 图标句柄 HINSTANCE // 实例句柄 HLOCAL // 局部内存块句柄 HMENU // 菜单句柄

2.3.2 函数与数据结构

Windows API函数可分为如下5类:窗口管理、GDI、系统服务、国际特性和网络服务。 下面是几个最基本的API函数和结构:

1.入口函数

int WINAPI WinMain(

HINSTANCE hInstance, // 当前实例的句柄 HINSTANCE hPrevInstance, // 先前实例的句柄 LPSTR lpCmdLine, // 命令行指针 int nCmdShow // 窗口的显示状态 );

2.窗口类结构

typedef struct _WNDCLASS { UINT style; // 窗口类风格

WNDPROC lpfnWndProc; // 窗口过程函数的长指针

int cbClsExtra; // 窗口类结构后的额外字节数(被系统初始化为0) int cbWndExtra; // 窗口实例后的额外字节数(被系统初始化为0) HANDLE hInstance; // 含有此类窗口过程的实例句柄

32

HICON hIcon; // 窗口类图标句柄(为NULL时系统会提供一个默认图标) HCURSOR hCursor; // 窗口类光标句柄 HBRUSH hbrBackground; // 窗口类背景刷句柄

LPCTSTR lpszMenuName; // 窗口类菜单的资源名串

// 可用MAKEINTRESOURCE宏转换菜单ID后来替代

LPCTSTR lpszClassName; // 窗口的类名(用RegisterClass注册) } WNDCLASS;

其中,ID(identifier,标识符)是一种代表资源的整型常数(如IDR_MAINFRAME),一般被(自动)定义在资源头文件Resource.h中(如#define IDR_MAINFRAME 128)。

3.注册窗口类函数

ATOM RegisterClass(

CONST WNDCLASS *lpWndClass // 含窗口类数据的结构地址 );

4.装入图标、光标和库存对象的函数

HICON LoadIcon( // 装入图标

HINSTANCE hInstance, // 应用程序实例句柄 LPCTSTR lpIconName // 图标名串或图标资源ID );

HCURSOR LoadCursor( // 装入光标

HINSTANCE hInstance, // 应用程序实例句柄 LPCTSTR lpCursorName // 光标的名串或资源标识符 );

HGDIOBJ GetStockObject( // 装入库存对象 int fnObject // 库存对象的类型 );

33

5.窗口创建函数

HWND CreateWindow(

LPCTSTR lpClassName, // 注册过的类名串的指针 LPCTSTR lpWindowName, // 窗口名串的指针 DWORD dwStyle, // 窗口风格 int x, // 窗口左上角的水平位置 int y, // 窗口左上角的垂直位置 int nWidth, // 窗口的宽度 int nHeight, // 窗口的高度

HWND hWndParent, // 父窗口或属主窗口的句柄 HMENU hMenu, // 菜单或子窗口标识符的句柄 HANDLE hInstance, // 应用程序实例句柄 LPVOID lpParam // 窗口创建数据的指针 );

6.显示与刷新窗口的函数

BOOL ShowWindow( // 显示窗口 HWND hWnd, // 窗口句柄

int nCmdShow // 窗口的显示状态 );

BOOL UpdateWindow( // 刷新窗口 HWND hWnd // 窗口句柄 );

7.过程函数

下面是消息处理的自定义与默认过程函数:

LRESULT CALLBACK WindowProc( // 消息处理的自定义过程函数 HWND hWnd, // 窗口句柄

34

UINT uMsg, // 消息标识符

WPARAM wParam, // 第一个消息参数 LPARAM lParam // 第二个消息参数 );

LRESULT DefWindowProc( // 消息处理的默认过程函数 HWND hWnd, // 窗口句柄 UINT uMsg, // 消息标识符

WPARAM wParam, // 第一个消息参数 LPARAM lParam // 第二个消息参数 );

8.消息结构

typedef struct tagMSG { HWND hWnd, // 接受消息的窗口句柄 UINT message, // 消息数

WPARAM wParam, // 第一个消息参数 LPARAM lParam // 第二个消息参数 DWORD time; // 消息发送的时间

POINT pt; // 消息发送时的光标位置(屏幕坐标) } MSG;

9.消息的获取、转换和传送函数

BOOL GetMessage( // 获取消息 LPMSG lpMsg, // 消息结构的地址 HWND hWnd, // 窗口句柄

UINT wMsgFilterMin, // 第一个消息参数 UINT wMsgFilterMax // 最后第一个消息参数 );

BOOL TranslateMessage( // 转换消息(将虚拟键翻译成字符)

35


02MFC基础 - 图文(7).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:加气混凝土砌块墙施工方案

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: