句柄类型 说明
HWND 窗口句柄
HINSTANCE 当前实列句柄
HCURSOR 光标句柄
HFONT 字体句柄
HPEN 画笔句柄
HBRUSH 画刷句柄
HDC 设备环境句柄
HBITMAP 位图句柄
HICON 图标句柄
HMENU 菜单句柄
HFILE 文件句柄
系统定义消息宏前缀
BM_ 按钮控制消息
CB_ 组合框
DM_ 压式按钮
EM_ 编辑框
LB_ 列表框
SBM_ 滚动条
WM_ 窗口
不同消息类型取直范围
系统定义1 0x0000--0x03FF
用户定义内部消息 0x0400--0x07FF
系统定义2 0x0800--0xBFFF
用户定义外部消息 0xC000--0xFFFF
常用的部分Windows数据类型
WORD 16位无符号整数
LONG 32位有符号整数
DWORD 32位无符号整数
HANDLE 句柄
UINT 32位无符号整数
BOOL 布尔
LPTSTR 指向字符串的32位指针
LPCTSTR 指向字符串常量的32位指针
数据结构
typedef struct tagMSG
{
HWND hwnd; 检索窗口句柄
UNIT message; 消息直
WPARAM wParam; 参数
LPARAM lParam; 参数
DWORD time; 消息送至队列的时间
POINT pt; 消息发送时光标位置
}
typedef struct tagPOINT
{
LONG x,y;
} POINT;
typedef struct tagWNDCLASS
{
UINT style;
WINDPROC lpfnWndProc;
Int cbClsExtra;
Int cbWndExtra;
HINSTANCE hInstance;
HICON hIcon;
HCURSOR hCursor
HBRUSH hbrBackground;
LPCTSTR lpszMenuName;
LPCTSTR lpszClassName;
}WNDCLASS;
typedef struct tagRECT
{
LONG left;
LONG top;
LONG right;
LONG bottom;
}RECT;
位图应用
HDC hdc; 设备环境句柄
HDC hdcmem; 内存设备环境句柄
HBITMAP hBm; 位图句柄
BITMAP bm; BITMAP结构
hdc=GetDC(hwnd);
hdcmem=CreateCompatibleDC(hdc); 先获得内存设备环境
hBm=LoadBitmap 加载位图
(
hInstanc, 当前应用程序实列句柄
lpszName 位图名称
);
hBm=CreateCompatibleBitmap(hdc,nWidth,nHeight,) 或者是创建位图
SelectObject(hcdmem,hBm); 送入内存
在输出位图之前获得位图尺寸
int GetObject
(
HANDLE hObject, 对象句柄
int nCount, 考贝到缓冲区的字节数
LPVOID lpObject 接收信息的缓冲地址
)
int GetObject
(
hBm,
sizeof(BITMAP),
(LPVIOD)&bm
)
写入信息到位图结构中
typedef struct tagBITMAP
{
LONG bmType; 位图类型
LONG bmWidth; 位图宽度
LONG bmHeight; 位图高度
LONG bmWidthBytes; 每一光栅行的字节数
WORD bmPlanes; 位图中位面的数目
WORD bmBitsPixel; 位图中每个象素的位数
LPVIOD bmBits; 位图位直的地址
};BITMAP
输出位图
BOOL BitBlt
(
HDC hdcDest, 目的设备环境句柄
int Xdext,int Ydest 目的设备显示位图的基本点
int Width, int nHeitght, 目的设备显示区域的高和宽
HDc hdcscr 元设备句柄
int xScr,int yscr, 元设备位图的左上角点
DWORD dwrop 位图的显示方式
)
位图的显示方式 dwrop
BLACKNESS 输出全黑色
DSTINVERT 目标执行取反操作
MERGECOPY 将原图与模板执行与
MERGEPAINT ................或
NOTSRCCOPY 在拷贝之前将原图执行取反
NOTSTCERASE 原和目的执行或,再执行取反
PATCOPY 将模版拷贝到目标位置
PAINTVERT 将模板和目标位图执行异或
SRCCOPY 将原拷贝到目标位图
SRCAND 将原和目标执行与
SRCPAINT ..............或
SRCERASE 目标先取反再和原执行与
SRCINVERT 将原和目标执行异或
WHITENESS 输出全白
窗口
BOOL EnableWindow(HWND hwnd,Bool bEnable);
BOOL MoveWindow(HWND hwnd,int x,int y,int nWidth,int nHeight,BOOL bReprint)
bool SetWinodwText(HWND hwnd, LPCTSTR lpszString);
int GetWindowText(HWND hwnd, LPSTR lpszString, int nMax)
设备环境
HDC hdc=GetDC(hwnd);
void ReleaseDC(hdc);
PAINTSTRUCT ps;
HDC hdc=BeginPaint(hwnd,&ps)
typedef struct tagPAINTSTRUCT
{
HDC hdc;
BOOL fErase; 擦除无效矩形背景
RECT rcPaint 无效矩形标识
BOOL fRestore; 系统保留
BOOL fIncUpdate; 系统保留
BYTE rgbReserved[16] 系统保留
}PAINTSTRUCT:
void EndPaint(HWND hwnd, PAINTSTRUCT &ps);
映象模式
MM_TEXT 一个象素 Y向下 X向右
MM_HIENGLISH 0.001英寸 Y向上 X向右
MM_HIMETRIC 0.01毫米 Y向上 X向右
MM_ISOTROPIC 系统确定 可选 X:Y=1:1
MM_LOENGLISH 0.01英寸 Y向上 X向右
MM_LOMETRIC 0.1毫米 Y向上 X向右
MM_ANISOTROPIC 系统确定 可选
MM_TWIPS 1/1440英寸 Y向上 X向右
int nMapMode=GetMapMode(hdc);
SetMapMode(hdc,nMapMode);