STatic 透明有关问题 内容重叠
STatic 透明问题 内容重叠
重载了OnCtlColor
但是只要我的static的内容发生了变化的 话
以前的内容就会和现在的内容重叠在一起
------解决方案--------------------
应该是Static画的问题,static是不能透明的,透明貌似只是针对文字来说的。
------解决方案--------------------
用空刷是擦除不了原来画的东西的,所以会出现内容重叠的情况
如果要动态改变static的文本,最好不要在WM_CTLCOLORSTATIC返回空刷;
或者在改变文字之后立即刷新控件的父窗口对应的背景(用InvalidateRect)
最简单的办法就是用ShowWindow将控件隐藏再显示
------解决方案--------------------
需要父窗口刷新下static区域
pStatic->SetWindowText(str);
pParent->InvalidateRect(rcStatic);
------解决方案--------------------
------解决方案--------------------
父窗口立即刷新,以更新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区域