回 帖 发 新 帖 刷新版面

主题:工具栏的重绘问题

我想给一个工具栏增加背景(通过CReBar实现),而且是不断变换的(通过设置定时器实现)。

在OnCreate中的代码如下:
m_rebar.Create(this);
    m_rebar.AddBar(&m_wndToolBar);
    REBARBANDINFO info;
    info.cbSize = sizeof(info);
    info.fMask = RBBIM_BACKGROUND;
    m_wndToolBar.ModifyStyle(0, TBSTYLE_TRANSPARENT);
    info.hbmBack = ::LoadBitmap(AfxGetInstanceHandle(), MAKEINTRESOURCE(IDB_BITMAP1));
    m_rebar.GetReBarCtrl().SetBandInfo(0, &info);

    SetTimer(1, 500, NULL);

在OnTimer中的代码如下:
REBARBANDINFO info;
    info.cbSize = sizeof(info);
    info.fMask = RBBIM_BACKGROUND;
    static int nIndex = 1;
    m_wndToolBar.ModifyStyle(0, TBSTYLE_TRANSPARENT);
    info.hbmBack = ::LoadBitmap(AfxGetInstanceHandle(), MAKEINTRESOURCE(IDB_BITMAP1 + ((nIndex++) % 3)));
    
    m_rebar.GetReBarCtrl().SetBandInfo(0, &info);
    m_rebar.Invalidate(TRUE);

最后的结果是:两边的颜色在变换,可是工具栏中间的颜色没有变,但是用东西遮盖以后,发生重绘以后颜色就改变了。

所以,怎么让工具栏在代码中重绘啊?

回复列表 (共1个回复)

沙发

窗口重绘一下看看

我来回复

您尚未登录,请登录后再回复。点此登录或注册