我有一个工具栏,其上有一些显示文本的静态子控件(例如:“查找”...)。
此工具栏上有2个编辑控件。当我调整主窗口的大小时,我在工具栏的某些部分闪烁。所以我尝试使用WS_CLIPCHILDREN
作为工具栏,它解决了flikcer问题。
但由于以下原因,我不想使用WS_CLIPCHILDREN
:
我的工具栏有漂亮的背景(使用REBARCLASSNAME)。所以我不希望静态控件的背景(不好看)出现。因此,在工具栏的wndproc中,我有以下代码:
if (WM_CTLCOLORSTATIC == message) {
HWND hStatic = (HWND)lParam;
if (......)
{
SetBkMode((HDC)wParam, TRANSPARENT);
SelectBrush((HDC)wParam, GetStockBrush(NULL_BRUSH));
return 0;
}
}
因此,静态显示文本内容与工具栏具有相同的背景。如果我使用WS_CLIPCHILDREN
,则此效果不再有效。
我还尝试使用背景位图并将静态控件设置为SS_BITMAP
,但函数SetText
不再起作用。
所以这就是问题:
Is there anyway to specify a control that would not be affected by the painting of the parent.
In my case, the specific control is edit control. But for the static control, I want the parent
to take the control.
Or how to fix the flicker issue in another way? I tried to double buffer the toolrbar, but it
doesn't work.
答案 0 :(得分:0)
不要使用空刷,只是将静态控件子类化并自己绘制背景(使用工具栏背景)。