簡體   English   中英

C ++ Win32:如何設置窗口的顏色?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM