YSTEM_FIXED_FONT)) ; SetBkMode (hdc, TRANSPARENT) ; TextOut (hdc, 24 * cxChar, cyChar, szTop, lstrlen (szTop)) ; TextOut (hdc, 24 * cxChar, cyChar, szUnd, lstrlen (szUnd)) ; EndPaint (hwnd, &ps) ; return 0 ; case WM_DRAWITEM : case WM_COMMAND : ScrollWindow (hwnd, 0, -cyChar, &rect, &rect) ; hdc = GetDC (hwnd) ; SelectObject (hdc, GetStockObject (SYSTEM_FIXED_FONT)) ; TextOut( hdc, 24 * cxChar, cyChar * (rect.bottom / cyChar - 1), szBuffer, wsprintf (szBuffer, szFormat, message == WM_DRAWITEM TEXT ("WM_DRAWITEM") : TEXT ("WM_COMMAND"), HIWORD (wParam), LOWORD (wParam), HIWORD (lParam), LOWORD (lParam))) ; ReleaseDC (hwnd, hdc) ; ValidateRect (hwnd, &rect) ; break ; case WM_DESTROY : PostQuitMessage (0) ; return 0 ; } return DefWindowProc (hwnd, message, wParam, lParam) ; }
单击按钮时,按钮就给父视窗讯息处理程式发送一个WM_COMMAND讯息,也就是我们所熟悉的WndProc。BTNLOOK的WndProc将该讯息的wParam参数和lParam参数显示在显示区域的右边,如图9-1所示。
具有BS_OWNERDRAW样式的按钮在视窗上显示为一个背景阴影,因为这种样式的按钮是由程式来负责绘制的。该按钮表示它需要由包含lParam讯息参数的WM_DRAWITEM讯息来绘制,而lParam讯息参数是一个指向DRAWITEMSTRUCT型态结构的指标。在BTNLOOK中,这 |