具有透明效果的static控件的刷新问题?(有点难)

zdcs 2006-07-19 09:29:19
我实现了一个具有透明效果的static控件,具体做法是重载了
HBRUSH CLabel::CtlColor(CDC* pDC, UINT nCtlColor)
{
CBrush bbb=pDC->SetBkMode(TRANSPARENT);
return (HBRUSH)GetStockObject(NULL_BRUSH);//|!!!!!!!!!!!!
}

实际上达到了目的,这一步成功

问题是:我用一个Clabel作了一个时钟显示的功能,即在CXXXDlg的的ontimer中不断的按照当前时间更改这个控件的文本,结果是无法刷新,就是说本来是01,下一秒02时出现01和02数字重叠的效果,
时间久了最终黑成一团,请问该如何解决????

谢谢!!!!
...全文
432 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
ibaobao 2006-08-15
  • 打赏
  • 举报
回复
RedrawWindow正解呀,多谢
rockliub 2006-08-08
  • 打赏
  • 举报
回复
我也做了这个东东,设置Timer的time-out是100,即每秒刷新一次,但是这样的话那个Static控件在运行过程中总是闪的很明显,不知道有没有办法解决?
CTime now=CTime::GetCurrentTime();
CRect rc;
GetDlgItem(IDC_STATIC_TIME)->GetWindowRect(&rc);
ScreenToClient(&rc);
ts=now-time;
CString str=ts.Format("%M:%S");
GetDlgItem(IDC_STATIC_TIME)->SetWindowText(str);
InvalidateRect(rc,FALSE);
CFormView::OnTimer(nIDEvent);
这是OnTimer中的内容,哪位帮看下?

时间紧,来不及看结了的贴再回的话是否扣分了,版主高抬贵手啊!
zdcs 2006-07-19
  • 打赏
  • 举报
回复
哈哈,成功了,
原来我忘记了ScreenToClient(&rc),结果没效果
毕竟有段时间没用vc了,一些细节总是忘记

太感谢各位了!!!!!!谢谢谢谢谢谢
折腾_苏州 2006-07-19
  • 打赏
  • 举报
回复
CRect rc;
GetDlgItem(IDC_STATIC_TIME)->GetWindowRect(&rc);
ScreenToClient(&rc);
InvalidateRect(rc);
CBrush bbb=pDC->SetBkMode(TRANSPARENT);
return (HBRUSH)GetStockObject(NULL_BRUSH);//|!!!!!!!!!!!!
wanilyer 2006-07-19
  • 打赏
  • 举报
回复
Invaliddate 这个刷新的整个对话框,InvalidateRect(rc);而这个刷新的是你指定的区域,如果你指定的区域不对,那肯定刷新就不对了。那肯定就没效果了咯。
wanilyer 2006-07-19
  • 打赏
  • 举报
回复
你把我的代码拷贝进去试过了?还是你自己以前试的,你得到的Rect是正确的吗?
InvalidateRect(rc);
这个函数肯定是可以的啊。
zdcs 2006-07-19
  • 打赏
  • 举报
回复
InvalidateRect(rc);
我尝试过了,不行,但是Invaliddate却可以,但是整个对话框都在抖动,因为每秒一次,显然不能接受这样的效果

redrawindows没成功

wanilyer 2006-07-19
  • 打赏
  • 举报
回复
在你的OnTimer函数中多加入一下三句试试,关于这个问题好像很多人问过了
我也好像回答了很多次了
GetDlgItem(IDC_EDIT1)->GetWindowRect(rc);
ScreenToClient(rc);
InvalidateRect(rc);
hhyytt 2006-07-19
  • 打赏
  • 举报
回复
SetBkMode(TRANSPARENT);//当然没刷新。
caferd 2006-07-19
  • 打赏
  • 举报
回复
你可以尝试使用RedrawWindow来刷,应该就没有问题了

15,976

社区成员

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

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