学习了一个星期的SDK,下面是做的点笔记
消息宏前缀:
WM_:窗口消息
BM_:按钮控制消息
CB_:组合框控制消息
EM_:编辑框控制消息
LB_:列表框控制消息
SBM_:滚动条控制消息
一个句柄标识一个Windows使用的唯一整数数值,用来标识应用程序中不同对象和同类对象中的不同的实例,应用程序通过句柄来访问相应的对象信息
HWND 窗口句柄
HDC 设备环境句柄
HINSTANCE 当前实例句柄
HBITMAP 位图句柄
HCURSOR 光标句柄
HICON 图标句柄
HFONT 字体句柄
HBRUSH 笔刷句柄
HMENU 菜单句柄
HFILE 文件句柄
SDK常用的数据结构:
MSG:包含一个消息的全部信息
WNDCLASS:包含窗口类的全部信息
RECT:矩形区域
PAINTSTRUCT:为每一个窗口保存一个"绘图信息结构"
TEXTMETRIC :字体结构
InvalidateRect和UpdateWindow的区别
InvalidateRect是将客户区标记为无效,并产生WM_PAINT消息,Windows会将WM_PAINT消息放入队列,等待窗口过程的处理,然后操作系统将WM_PAINT当作是低优先级消息,如果后面有其他的动作要处理,则可能会出现空白的区域需要等待一段时间才被刷新。
UpdateWindow则将导致操作系统立即用WM_PAINT调用窗口过程,而不进入队列,使窗口得到立即的刷新。窗口过程完成刷新后立即退出,Windows将控制返回给UpdateWindow之后的语句。*/
if(!TranslateAccelerator(hwnd,hAccel,&msg))
在消息循环中,截获加速键消息TranslateAccelerator寻找WM_KEYDOWN,WM_CHAR,WM_KEYUP序列与表中键值匹配的字符,如果找到,它插入一条WM_COMMAND到消息队列,在消息队列中的命令ID可以是加速键表定义的任何入口
PostQuitMessage函数投递一个WM_QUIT消息到线程消息队列并且立即返回.该函数简单的通知系统线程请求马上退出.当线程从它的消息队列收到WM_QUIT消息时,将退出自身消息循环并且交还控制给操作系统.WM_QUIT消息的wParam参数作为程序退出码返回给系统处理.
PtInRect(&rect, point)//判断点是否在矩形内
wsprintf(char szTitle[],"%d",i)//把输出格式和输出变量送到szTitle数组