STatic 透明有关问题 内容重叠

STatic 透明问题 内容重叠
重载了OnCtlColor
C/C++ code

    HBRUSH   hbr   =   CDialog::OnCtlColor(pDC,   pWnd,   nCtlColor);
    
    //   TODO:   Change   any   attributes   of   the   DC   here
    int   nID   =   pWnd-> GetDlgCtrlID();
    
    
    if(nID==IDC_Name)//你的static的名字,最后建好后将它改一下名,不用它的
        //默认的ID:IDC_STATIC
    {
        pDC-> SetTextColor(RGB(100,20,120));   //设置字体颜色
        pDC-> SetBkMode(TRANSPARENT);
        return   HBRUSH(GetStockObject(HOLLOW_BRUSH));
    }
        return   hbr; 


但是只要我的static的内容发生了变化的 话

以前的内容就会和现在的内容重叠在一起

------解决方案--------------------
应该是Static画的问题,static是不能透明的,透明貌似只是针对文字来说的。
------解决方案--------------------
用空刷是擦除不了原来画的东西的,所以会出现内容重叠的情况

如果要动态改变static的文本,最好不要在WM_CTLCOLORSTATIC返回空刷;
或者在改变文字之后立即刷新控件的父窗口对应的背景(用InvalidateRect)

最简单的办法就是用ShowWindow将控件隐藏再显示

------解决方案--------------------
需要父窗口刷新下static区域
pStatic->SetWindowText(str);
pParent->InvalidateRect(rcStatic);
------解决方案--------------------
探讨
需要父窗口刷新下static区域
pStatic->SetWindowText(str);
pParent->InvalidateRect(rcStatic);

------解决方案--------------------
父窗口立即刷新,以更新static区域