0

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

1 回答 1

0

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

于 2012-08-23T09:54:03.160 回答