闪烁问题但不想使用CLIPCHILDREN样式

时间:2012-08-04 15:12:26

标签: c winapi static flicker editbox

我有一个工具栏,其上有一些显示文本的静态子控件(例如:“查找”...)。 此工具栏上有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.

1 个答案:

答案 0 :(得分:0)

不要使用空刷,只是将静态控件子类化并自己绘制背景(使用工具栏背景)。