Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/67.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ c++;win32:如何设置窗口的颜色?_C++_C_Winapi - Fatal编程技术网

C++ c++;win32:如何设置窗口的颜色?

C++ c++;win32:如何设置窗口的颜色?,c++,c,winapi,C++,C,Winapi,我可以在注册课程时设置背景色,例如: wincl.hbrBackground = CreateSolidBrush(RGB(202, 238, 255)); RegisterClassEx(&wincl); 但是,我该如何处理我用CreateWindow函数创建的任何窗口呢? 像主窗口上的按钮一样,我启用了视觉样式,并且我可以注意到按钮后面的windows默认灰背颜色 不要告诉我必须在我的所有控件上设置WindowLong以执行window过程,并截取WM_PAINT:(如果您想要自定

我可以在注册课程时设置背景色,例如:

wincl.hbrBackground = CreateSolidBrush(RGB(202, 238, 255));
RegisterClassEx(&wincl);
但是,我该如何处理我用CreateWindow函数创建的任何窗口呢? 像主窗口上的按钮一样,我启用了视觉样式,并且我可以注意到按钮后面的windows默认灰背颜色


不要告诉我必须在我的所有控件上设置WindowLong以执行window过程,并截取WM_PAINT:(

如果您想要自定义窗口,您可以创建自己的窗口类来绘制该类型的窗口。为wm_paint实现处理程序,并为该窗口绘制您想要的任何内容。有很多教程可用。

所有窗口控件都会向其父控件发送一条消息,让笔刷用于填充其背景。 假设将画笔句柄的副本保存在某个位置,可以在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;