[英]c++ win32: how to set back color of a window?
我可以在注冊課程時設置背景色,例如:
wincl.hbrBackground = CreateSolidBrush(RGB(202, 238, 255));
RegisterClassEx(&wincl);
但是,我該如何使用CreateWindow函數創建的任何窗口呢? 就像我主窗口上的按鈕一樣,我啟用了視覺樣式,並且我可以注意到按鈕后面的窗口默認為灰色。
別告訴我我必須在我的控件上為Allllllll上的窗口過程設置SetWindowLong並攔截WM_PAINT :(
所有的Windows控件都會向其父級發送一條消息,以獲取畫筆以填充其背景。 假設將畫筆柄的副本保存在某處,則可以在WindowProc或DialogProc中執行以下操作,以確保使用正確的背景畫筆繪制所有內容。
case WM_CTLCOLORSTATIC:
case WM_CTLCOLORBTN:
HDC hdc;
HWND hwndCtl;
POINT pt;
hdc = (HDC)wParam;
hwndCtl = (HWND)lParam;
pt.x = 0;
pt.y = 0;
MapWindowPoints(hwndCtl,_hwnd,&pt,1);
x = -pt.x;
y = -pt.y;
SetBrushOrgEx(hdc,x,y,NULL);
return (INT_PTR)_skinBrush;
如果要定制窗口,可以創建自己的窗口類以繪制該類型的窗口。 為wm_paint實現一個處理程序,並為窗口繪制任何內容。 有很多可用的教程。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.