本文系统的学习下windows应用程序开发的基本知识。
1 句柄 hwnd就是上一篇hello world里见到的句柄,此外还有hinstance等,绘图还要用到hdc,句柄是绕不过去的,要系统了解一下。
句柄类型 | 说明 | 句柄类型 | 说明 |
HWND | 窗口 | HDC | 设备环境 |
HINSTANCE | 当前实例 | HBITMAP | 位图 |
HCURSOR | 光标 | HICON | 图标 |
HFONT | 字体 | HMENU | 菜单 |
HPEN | 画笔 | HFILE | 文件 |
HBRUSH | 画刷 |
2 消息
消息结构体包括hwnd, message, wparam, lparam, time, pt组成,字参数wparam和长字参数lparam与具体消息号的值有关。
VC++存在几种系统定义的消息分类,前缀如下:BM表示按钮控件消息,CB表示组合框消息,DM表示下压式按钮控件消息,EM表示编辑控件消息,LB表示列表控件消息,SBM表示滚动条消息,WM表示窗口消息。
WM_LBUTTONDOWN | 点击鼠标左键时产生此消息 |
WM_KEYDOWN | 按下非系统键时产生此消息 |
WM_CHAR | 按下非系统键时产生此消息 |
WM_CREATE | CreateWindow函数发出此消息 |
WM_CLOSE | 关闭窗口时产生此消息 |
WM_DESTROY | DestroyWindow函数发出的信息 |
WM_QUIT | PostQuitMessage函数发出的信息 |
WM_PAINT | 窗口改变等事件产生此消息 |
3 消息循环
translate负责将消息转换为字符信息;
dispatch负责将消息传递到指定窗口函数。
当GetMessage返回0值,即WM_QUIT时,结束消息循环。
4 窗口函数
窗口函数定义了应用程序对接收到的不同消息的响应。通常由switch组成,用于应对不同消息。
当窗体结束时,调用PostQuitMessage,函数发出0值消息,再次进入消息循环时,就可以结束消息循环了。
如果是选择了DefWindowProc,则进入默认消息处理函数,这主要是保证每条消息都得到相应处理。
了解以上内容,就可以对Helloworld程序做一些修改,看看不同参数的窗口是什么样子的。
把窗口风格修改后,最大化和最小化按钮就没有了,还出来了滚动条。