0

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

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

4

2 回答 2

1
  1. > wClass.hbrBackground=(HBRUSH)(RGB(255,255,255));

我想类结构需要画笔的句柄,而不是颜色值本身(但我不确定)。像这样的东西:

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

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

于 2012-11-01T23:03:18.510 回答
0

我试图记住微软是否输入了代码来清除客户区。我至少知道,您可以获取客户端矩形,然后使用它来将 drawRect() 命令建立到整个客户端区域。您可能还需要捕获命令以擦除背景

于 2012-11-01T17:45:43.230 回答