读书人

Invalidate和 InvalidateRect 刷新有关

发布时间: 2013-07-01 12:33:04 作者: rapoo

Invalidate和 InvalidateRect 刷新问题
void CTransparentDialogDlg::OnTimer(UINT nIDEvent)
{

CRect Rect;
GetDlgItem(IDC_STATIC1)->GetWindowRect(&Rect);
//Invalidate(FALSE); //全局刷新这句有效果
InvalidateRect(&Rect,FALSE); //这却无效 实在搞不太明白为什么了。
CTime time=CTime::GetCurrentTime();
CString str=time.Format("%H:%M:%S");
SetDlgItemText(IDC_STATIC1,str);
CDialog::OnTimer(nIDEvent);
}

因为背景我设置是透明的 所以文字每次都会有上一次显示的信息 显示时间 显示几次那字就模糊了
使用Invalidate 就刷新了 但全部都刷新 连按钮都刷新了
然后该使用 InvalidateRect(&Rect,FALSE); 一样无效
InvalidateRect(&Rect,TRUE);也是无效的 请大牛调教。!

[解决办法]
刷新区域不对。
CRect Rect;
GetDlgItem(IDC_STATIC1)->GetWindowRect(&Rect);
ScreenToClient(Rect); // 把全屏区域转换成相对区域
InvalidateRect(&Rect,FALSE);

读书人网 >C++

热点推荐