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所示。不幸的是,这些颜色在印表纸上被显示为不同深浅的灰色。