|
TOP
|
|
滑鼠(二十七)
d, 0, 1 ^ GetWindowLong (hwnd, 0)) ; InvalidateRect (hwnd, NULL, FALSE) ; return 0 ; case WM_PAINT : hdc = BeginPaint (hwnd, &ps) ; GetClientRect (hwnd, &rect) ; Rectangle (hdc, 0, 0, rect.right, rect.bottom) ; if (GetWindowLong (hwnd, 0)) { MoveToEx (hdc, 0, 0, NULL) ; LineTo (hdc, rect.right, rect.bottom) ; MoveToEx (hdc, 0, rect.bottom, NULL) ; LineTo (hdc, rect.right, 0) ; } EndPaint (hwnd, &ps) ; return 0 ; } return DefWindowProc (hwnd, message, wParam, lParam) ; }
CHECKER3有两个视窗讯息处理程式WndProc和ChildWndProc。WndProc还是主(或父)视窗的视窗讯息处理程式。ChildWndProc是针对25个子视窗的视窗讯息处理程式。这两个视窗讯息处理程式都必须定义为CALLBACK函式。
因为视窗讯息处理程式与特定的视窗类别结构相关联,该视窗类别结构由Windows呼叫RegisterClass函式来注册,CHECKER3需要两个视窗类别。第一个视窗类别用於主视窗,名为「Checker3」。第二个视窗类别名为「Checker3_Child」。当然,您不必选择像这样有意义的名字。
CHECKER3在WinMain函式中注册了这两个视窗类别。注册完常规的视窗类别之後,CHECKER3只是简单地重新使用wndclass结构中的大多数的栏位来注册Checker3_Child类别。无论如何,有四个栏位根据子视窗类别而设定为不同的值:
|
|