MFC设置透明Edit Control后的更新绘制问题

Voyageur2 2011-06-03 02:06:49
具体问题是这样的,我设置了一个Edit Control来显示读取的数据,当文件更改后,Edit Control里面的数据也要更新;在不设置Edit Control透明的时候,会正常显示,但是设置透明后就出现了问题,当打开一个文件后,Edit Control显示了文件的数据,重新打开另一个文件的时候原来的显示数据不能消掉,与原有的重复,如下图:

然后拖选里面的内容后,蓝色背景也不能消掉,会一直留在那个地方,如下图:

设置代码如下:

HBRUSH CMyXMLDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
{
// default processing
HBRUSH hBrush = NULL;

if((pWnd->GetDlgCtrlID() == IDC_STATIC)||(pWnd->GetDlgCtrlID() == IDC_EDIT1))
{
pDC->SetBkMode(TRANSPARENT);
hBrush = (HBRUSH)::GetStockObject(NULL_BRUSH);
}
else
hBrush = CDialog::OnCtlColor(pDC, pWnd, nCtlColor); // rest of controls, default

return hBrush;
}

其中IDC_STATIC是静态文本,IDC_EDIT1是Edit Control,请问高手该怎样刷新这个?
...全文
417 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
net_wolf 2014-02-14
  • 打赏
  • 举报
回复
谢谢,解决了我的edit control刷新问题。 InvalidateRect(EDIT窗口句柄, NULL, FALSE);
lyjustmyname1003 2013-03-25
  • 打赏
  • 举报
回复
老兄 你是咋整得 啊 强制刷新的函数怎么用啊
clm_yeah 2012-07-13
  • 打赏
  • 举报
回复
兄弟,我现在也碰见此问题,你那是咋解决的?
分享下啊~
Voyageur2 2011-06-03
  • 打赏
  • 举报
回复
这个问题我已经解决了,确实是用InvalidateRect(EDIT窗口句柄, NULL, FALSE);
我直接使用了这个项目里面的类:
http://www.codeproject.com/KB/edit/ctrltrans.aspx
非常方便
pop1210 2011-06-03
  • 打赏
  • 举报
回复
关注~
海盗医生 2011-06-03
  • 打赏
  • 举报
回复
EDIT微软实现的很特殊,是有你说的上边的问题
强制刷新

InvalidateRect(EDIT窗口句柄, NULL, FALSE);
Mr。Lili 2011-06-03
  • 打赏
  • 举报
回复
支持下楼主

15,979

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 界面
社区管理员
  • 界面
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧