CStatic控件没有刷新
我想在static控件中显示实时的时间,代码在OnTimer内实现,我从CStatic重载了类CStaticEx,在这个类内重载了PresubclassWindow将static控件设为owner draw,然后在对话框中声明变量m_static,可用m_static.SetWindowText(strTime)(SetWindowText也重载了)时变化的秒数却因为没刷新而重叠起来,请问该在哪刷新?多谢!!! 问题点数:60、回复次数:6Top
1 楼Mackz(在相互)回复于 2006-03-14 15:56:58 得分 10
如果重叠起来显示,证明已经刷新了,关键是要重绘背景。然后又会出现闪烁,就需要用双缓冲。Top
2 楼fairyprince(精灵王子)回复于 2006-03-14 15:58:02 得分 0
不明白为何你要重做一个派生类,直接用 SetWindowText() 不就行了!Top
3 楼MLiang(俺想有栋房)回复于 2006-03-14 16:49:39 得分 0
重画次背景Top
4 楼gd4ever()回复于 2006-03-14 17:53:29 得分 0
干吗用cstatic?直接用edit不就行了?把edit属性设为没有边框,效果不一样?Top
5 楼eastred(东方红)回复于 2006-03-15 09:45:21 得分 0
直接用SetWindowText()
或者直接挂个string变量,刷新它就行了。Top
6 楼Atomictry(天影)回复于 2006-03-15 10:03:38 得分 50
// 实现
void CYourDlg::RefreshStaticCtrl(UINT uCtlID)
{
CRect rc;
GetDlgItem(nCtlID)->GetWindowRect(rc);
ScreenToClient(rc);
InvalidateRect(rc);
}
// 每次更新过字符后调用
RefreshStaticCtrl(IDC_STATIC_XXX)Top




