二、Windows自己的窗口—处理消息
窗口消息处理程序所接受的每个消息均是用一个数值来标识的,也就是传给窗口消息处理程序的message参数。Windows表头文件WINUSER.H为每个消息参数定义以「WM」(窗口消息)为前缀开头的标识符。
一般来说,Windows程序写作者使用switch和case结构来确定窗口消息处理程序接收的是什么消息,以及如何适当地处理它。窗口消息处理程序在处理消息时,必须传回0。窗口消息处理程序不予处理的所有消息应该被传给名为DefWindowProc的Windows函数。从DefWindowProc传回的值必须由窗口消息处理程序传回。
在HELLOWIN中,WndProc只选择处理三种消息:WM_CREATE、WM_PAINT和WM_DESTROY。窗口消息处理程序的结构如下:
switch (iMsg) { caseWM_CREATE : 处理WM_CREATE消息 return 0 ; caseWM_PAINT : 处理WM_PAINT消息 return 0 ; caseWM_DESTROY : 处理WM_DESTROY消息 return 0 ; } return DefWindowProc (hwnd, iMsg, wParam, lParam) ;
呼叫DefWindowProc来为窗口消息处理程序不予处理的所有消息提供内定处理,这是很重要的。不然一般动作,如终止程序,将不会正常执行。