如何更改STATIC win32控件的背景?

时间:2009-06-13 01:15:21

标签: c user-interface winapi

如果(文本)静态控件的父窗体在其背景上有图案,则静态控件周围的区域是纯色的丑陋斑点。如何使用其父窗口使用的相同模式绘制静态控件的背景?

我试过了,

SetClassLong(retval , GCL_HBRBACKGROUND, (LONG)stripes);

其中retval是HWND,指向我刚刚创建的静态控件,
和stripe是从位图创建的HBRUSH。我也试过这个:

SetClassLongPtr(retval , GCLP_HBRBACKGROUND, (LONG)stripes);

他们都没有工作。有谁知道如何在C中更改静态控件的背景?

更新

我处理了WM_CTLCOLORSTATIC消息,该消息在某种程度上起作用 - 它用我想要的模式填充所有标签中的空白空间。但是文字后面的颜色只是白色......我怎样才能让图案填满那个空间呢?

没关系,明白了 SetBkMode(hdc, TRANSPARENT);

1 个答案:

答案 0 :(得分:2)

您可以通过处理WM_CTLCOLOR消息来设置静态控件的背景颜色。

来自文档

  

如果应用程序处理此消息,它将返回一个句柄   刷。系统使用画笔   画出控件的背景。

该消息还传递指向您可以使用的显示上下文的指针。