rush (GetSysColor(COLOR_BTNHIGHLIGHT)) ; return 0 ; case WM_DESTROY : DeleteObject ((HBRUSH) SetClassLong (hwnd, GCL_HBRBACKGROUND, (LONG) GetStockObject (WHITE_BRUSH))) ; for (i = 0 ; i < 3 ; i++) DeleteObject (hBrush[i]) ; DeleteObject (hBrushStatic) ; PostQuitMessage (0) ; return 0 ; } return DefWindowProc (hwnd, message, wParam, lParam) ; } LRESULT CALLBACK ScrollProc (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam) { int id = GetWindowLong (hwnd, GWL_ID) ; switch (message) { case WM_KEYDOWN : if (wParam == VK_TAB) SetFocus (GetDlgItem (GetParent (hwnd), (id + (GetKeyState (VK_SHIFT) < 0 2 : 1)) % 3)) ; break ; case WM_SETFOCUS : idFocus = id ; break ; } return CallWindowProc (OldScroll[id], hwnd, message, wParam,lParam) ; }
COLORS1利用子视窗进行工作,该程式使用10个子视窗控制项:3个卷动列、6个静态文字视窗和1个静态矩形框。COLORS1拦截WM_CTLCOLORSCROLLBAR讯息来给红、绿、蓝3个卷动列的内部著色,并拦截WM_CTLCOLORSTATIC讯息来著色静态文字。
您可以使用滑鼠或者键盘来挪动卷动列,从而利用COLORS1作为一种实验颜色显示的开发工具,为您自己的Windows程式选择漂亮的颜色(或者,您可能更喜欢难看的颜色)。COLORS1的显示如图9-3所示。不幸的是,这些颜色在印表纸上被显示为不同深浅的灰色。
|