Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/144.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/google-app-engine/4.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++_Winapi_Win32gui - Fatal编程技术网

C++ 更改父窗口中的背景颜色

C++ 更改父窗口中的背景颜色,c++,winapi,win32gui,C++,Winapi,Win32gui,我对win32api编程非常陌生。我有三个问题 如何更改父窗口中的背景色。我照着下面的方法做了,但不起作用 wClass.hbrBackground=(HBRUSH)(RGB(255,255,255)); 第二个问题是,我使用如下方式在窗口中添加文本。文本采用粗体字体并带有背景色。我希望文本是正常的,没有背景颜色 PAINTSTRUCT ps; HDC hDC; char szBuffer[]="Hello, World!"; hDC=BeginPaint(hWnd,&

我对win32api编程非常陌生。我有三个问题

如何更改父窗口中的背景色。我照着下面的方法做了,但不起作用

wClass.hbrBackground=(HBRUSH)(RGB(255,255,255));
第二个问题是,我使用如下方式在窗口中添加文本。文本采用粗体字体并带有背景色。我希望文本是正常的,没有背景颜色

PAINTSTRUCT ps;
    HDC hDC;
    char szBuffer[]="Hello, World!";
    hDC=BeginPaint(hWnd,&ps);
    TextOut(hDC,10,10,szBuffer,strlen(szBuffer));
第三个问题是如何在父窗口中添加组框。我在internet上搜索了它,但这是如何使用资源在对话框中添加组框的描述。
请有人帮我解决这些问题…

我正在努力记住微软是否输入了清除客户端区域的代码。我知道,您至少可以获取客户机rect,然后使用它将drawRect()命令建立在整个客户机区域的基础上。您可能还必须捕获该命令以擦除背景

  • >wClass.hbrBackground=(HBRUSH)(RGB(255255)) 我假设类结构需要画笔的句柄,而不是颜色值本身(但我不确定)。大概是这样的:

    wClass.hbrBackground=(HBRUSH)(CreateSolidBrush(RGB(255,255,255)));
    
  • 要使文本背景透明,请使用特殊的WinAPI函数,
    SetBkMode(transparent)
    ;(哦,花点时间记住它的名字:))

  • 在大多数任务中,创建一个对话框资源并像使用普通窗口一样使用它(在其中绘制smth、放置简单的绘制窗口等)比使用普通窗口并尝试在其中添加对话框控件要好得多。自从WinForms和WPF之后,这就成为了一种常见的做法——它们中的每个窗口都是一个“窗体”,您可以在其中添加控件、绘制控件等等


  • 背景绘图应该在绘图过程中完成。@chris我在定义windows类时添加了代码。它不起作用。我把它加在WM_油漆上,它也不起作用。你能清楚地解释一下我应该在哪里添加代码和正确的语法吗?我以为你在类创建后更改了它的成员。您可以使用(IIRC)
    wClass.hbrBackground=reinterpret\u cast(颜色窗口+1)白色。我认为应该有一种给背景加颜色的方法。如果我画了一个矩形,有没有可能在矩形上抹上其他的元素,我会试试看。当然谢谢!元素是按代码中的操作顺序绘制的。Windows窗口的客户端区域基本上是一个位图对象。您将永久替换每个像素处的颜色。因此,绘制另一个对象只是将这些位置的像素更改为另一个颜色很好的答案。。。谢谢这个答案回答了我必须面对的所有问题。再次感谢……)对不起,这不会导致内存泄漏吗?据我所知,
    CreateSolidBrush()
    总是需要一个DeleteObject()调用来清理它。你能给我解释一下吗?