原理
- API:操作系统把它所能够完成的功能以函数的形式提供给应用系统使用,应用程序对这些函数的调用就叫做系统调用,这些函数的集合就是Windows操作系统提供给应用程序编程的接口(简称为Windows
API) - 消息响应:操作系统将事件传递给应用程序,应用程序对事件响应的过程称为消息响应
- 消息机制:操作系统将每个事件都包装成为一个“消息”的结构体(Message),来传递给应用程序
- 句柄:资源的标识,可以细分为图标句柄(HICON)、光标句柄(HCURSOR)、窗口句柄(HWND)、应用程序实例句柄(HINSTANCE)句柄类似于指针
- 鼠标、键盘按键类型:UINT(通常是利用一个个宏来表示具体的消息)
- HWND
- UINT
- WPAPAM(LPAPAM):为整型,指示关于消息的附加信息(获取到具体按键)
- DWORD time:消息拷贝时间
- POINT:点结构体,指示当消息被投递时光标在屏幕上的位置
- 消息队列:是一个某种变量类型的数组,操作系统将消息放入消息队列中,应用程序总是取走队列中的第一条消息
WinMain函数(应用程序入口)
- HINSTANCE hInstance:应用程序实例句柄(当前)
- HINSTANCE hPrevInstance:先前程序实例句柄
- LPSTR:IpCmdLine(LP:长指针):接受命令行参数
- int nCmdShow:表示显示状态
窗口创建四步骤
-
设计一个窗口类(光标形状、图标、背景)
- 本质上是或运算、与运算
- WNDPROC IpfnWndProc:指定窗口调用函数
- int cbClsExtra
- int cbWndExtra
- INSTANCE hInstance
- HICON hIcon:设计图标
- HCURSOR hCursor:设计光标
- HBRUSH hbrBackground:有一个强制类型转换
- LPCTSTR lpszMenuName
- LPCTSTR lpszClassName
-
注册窗口类
-
创建窗口
- HWND hwnd
- CreateWindow(“窗口类名”,“窗口标题”,窗口类型,x坐标,y坐标,宽度,高度,附窗口,菜单,实例号)
-
显示及更新窗口
- ShowWindow(窗口标识,显示状态)
- UpdateWindow(窗口标识)
消息循环
MSG msg
while(GerMessage(消息,窗口句柄(NULL即为所有消息),最小消息值(0),消息最大值(0)))
从消息队列中取出消息
{
TranslateMessage(&msg);消息翻译
DispatchMessage(&msg);消息分发
}
MessageBox:弹出消息框
MessageBox(哪个窗口拥有消息框,消息显示文本,消息框名,消息框类型)
HDC hdc
hdc-GetDC(哪个窗口相关的DC)
TextOut(DC句柄,x坐标,y坐标,文本内容,字符数)
ReleaseDc(窗口相关,句柄名)
WM_Paint
WM_CLOSE
DestoryWindow:窗口销毁
PostQuitMessage(0)
DefWindowProc