MFC SDI 程序
我在视图中显示了很多内容,其中在 CRect(10,10,100,60) 区域显示当前时间,如:【16:31:22】
这是个走动的电子表,需要用定时器每秒更新一次。
现在的问题是,我如何才能做到:只更新 (10,10,100,60) 这个区域,因为其它内容基本不需要变化。
我想应该使用 CWnd::InvalidateRect 函数,但我更新时间的代码写在什么地方?
我在视图中显示了很多内容,其中在 CRect(10,10,100,60) 区域显示当前时间,如:【16:31:22】
这是个走动的电子表,需要用定时器每秒更新一次。
现在的问题是,我如何才能做到:只更新 (10,10,100,60) 这个区域,因为其它内容基本不需要变化。
我想应该使用 CWnd::InvalidateRect 函数,但我更新时间的代码写在什么地方?
解决方案 »
- CWebBrowser控件中的HTML语言调用VC中函数的问题~!`!
- 散分,散分- 终于看懂了MFC 。 WTL , ATL。SDK - 哈哈,四年了,重来没有的清晰,
- 用MFC开发的ACTIVEX控件,怎样取得本控件所在的IE窗口的句柄。从而使这个IE窗口从最小化形式变成最大化形式。
- 关于平滑滚动
- 怎样在对话框控件的caption中加入特殊字符?
- DLL函数套用 LPSTR用什么代?
- 为什么我的vc++不会出提示?
- 请问大家一个问题:一棵完全二叉树包含A,B,C,D,E,F,G7个结点
- 请教各位:如何在生成的exe中添加新的属性页,显示更多文件信息?
- VC怎么察觉新的一天来了
- 如何释放如下那样动态分配的内存啊。
- 问一个关于LSP的问题
因此,建议在其他绘制调用之前,通过GetClipBox得到此矩形,如果发现就是电子表的矩形,则不绘制其他的,只做时间的绘制。
InvalidateRect(&r,TRUE);
请教 Mackz :
我在试图中的 OnDraw 函数中是这样写的:
// TODO: add draw code for native data here CRect rect;
GetClientRect( rect ); // 画矩形边框
pDC->Rectangle( rect.left+5, rect.top+5, rect.right-5, rect.bottom-5); // 显示视图中的其它内容
pDC->DrawText( "Windows Mobile" ,
rect,DT_CENTER|DT_VCENTER|DT_SINGLELINE);
// 重点在这里,显示时间,如:10:41:20
pDC->DrawText( m_str , CRect(0,0,100,100), DT_SINGLELINE|DT_CENTER|DT_VCENTER);
我的疑问是:调用 InvalidateRect 函数后,最后会执行到 OnDraw 函数;是不是又把 【画矩形】【显示 Windows Mobile】【显示时间】全部都重画了一遍?我的本意是,只更新【时间】部分。我对这部分不清楚,可能问的问题相当的幼稚;不过还是希望能简单的解释下!