操作系统感知事件和传递事件是通过消息机制来实现的
typedef struct tagMSG{
HWND hwnd; //窗口的句柄
UINT message;
WPARAM wParam; //信息的附加参数
LPARAM lParam;
DWORD time; //消息传递的时间
POINT pt; //消息投递的时候,光标的位置
}
句柄,资源的标识。操作系统要操作和管理这些资源都是通过句柄来找到对应的资源。按资源的类型,又可以将句柄细分成图标句柄(HICON)光标句柄(HCURSOR)窗口句柄(HWND)程序实例句柄(HINSTANCE)
UINT,unsigned int
为什么要起这么多变量名(都是int型),为了区分变量的用途
WORD是十六位的整数DWORD是32位的整数
windows程序的入口函数
int WINAPI WinMain(
HINSTANCE bInstance, //程序实例
HINSTANCE bPrevInstance,//之前的程序实例,在win32下总是为空
LPSTR lpCmdLine,//LP long point STR字符串,命令行参数
int CmdShow //程序显示状态
)
typedef struct _WNDCLASS{
UINT style;
WNDPROC lpfnWndProc;//窗口过程
int cbClsExtra;//类的额外数据
int cbWndExtra;//窗口的额外数据
HINSTANCE hInstance;
HICON hIcon; //图标
HCURSOR hCursor; //光标
HBRUSH hbrBackground;//画刷,背景
LPCTSTR lpszMenuName;// long point const string
LPCTSTR lpszClassName;
}WNDCLASS,*PWNDCLASS;
HWND CreatWindow(
LPCTSTR lpClassName,//类的名字,要注册过的
LPCTSTR lpWindowName,//窗口标题
DWORD dwStyle, //窗口的类型
int x, //窗口的水平坐标,horizontal
int y, //窗口的垂直坐标,vertical,左上角的坐标
int nWidth,
int nHeight, //窗口的宽度和高度
HWND hWndParent, //父窗口的句柄
HMENU hMenu, //菜单句柄
HINSTANCE hInstance,
LPVOID lpParam //单文档用不上
)
BOOL ShowWindow(
HWND hWnd, //窗口的句柄
int nCmdShow //显示的状态
)
UpdateWindow(hwnd);//更新窗口
//从消息队列中获得一个消息
BOOL GetMessage(
LPMSG lpMsg, //消息结构体的指针
HWND hWnd, //消息所在的窗口句柄,NULL时此线程的所有窗口
UINT wMsgFilterMin,
UINT wMsgFilterMax//消息范围,都为0的时候没有消息过滤
)
TranslateMessage(&msg);//将WM_KeyDown 和 WM_KeyUp转换成WM_Char消息
DispatchMessage(&msg);//将收到的消息传到窗口的回调函数中
1:24:13