更改父窗口中的背景颜色

时间:2012-11-01 17:23:56

标签: c++ winapi win32gui

我是win32api编程的新手。我有3个问题。

如何更改父窗口中的背景颜色。我做了如下但是它不起作用

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));

第三个问题是如何在父窗口中添加组框。我在互联网上搜索了它,但是这里描述了如何使用资源在对话框上添加组框。 请帮助我解决这些问题...

2 个答案:

答案 0 :(得分:0)

我正在努力记住微软是否提供代码来清除客户端区域。我知道至少,您可以获取客户端rect,然后使用它将drawRect()命令基于整个客户区。您也可能必须捕获命令以擦除背景

答案 1 :(得分:0)

  1. > wClass.hbrBackground =(HBRUSH)(RGB(255,255,255));
  2. 我认为类结构需要刷子的句柄,而不是颜色值本身(但我不确定)。像这样:

    wClass.hbrBackground=(HBRUSH)(CreateSolidBrush(RGB(255,255,255)));
    
    1. 要使文本背景透明,请使用特殊的WinAPI函数SetBkMode(TRANSPARENT); (Oof,花一些时间记住它的名字:))。

    2. 在大多数任务中,制作一个对话框资源并将其用作普通窗口(在其中绘制smth,放置绘制的简单窗口等)比使用普通窗口并试图更好在其中添加对话框控件。它成为了自WinForms和WPF以来的常见做法 - 它们中的每个窗口都是一个“表单”,您可以在其中添加控件,绘制它等等。