句柄类型说明
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);