MFC刷新取到的系统时间

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MFC刷新取到的系统时间相关的知识,希望对你有一定的参考价值。

CString strTime;
CTime time=CTime::GetCurrentTime(); //得到当前系统时间
CTime t = CTime::GetCurrentTime(); //获取系统日期
strTime=time.Format("%H:%M:%S");
CString str=t.Format("%Y-%m-%d");//显示年月日
::SetDlgItemText(AfxGetMainWnd()->m_hWnd,IDC_shijian,strTime); //送到指定控件
::SetDlgItemText(AfxGetMainWnd()->m_hWnd,IDC_nianyueri,str); //送到指定控件
UpdateData(FALSE);
以上代码取到了系统时间 也显示出来了 但是我要实现让时间的秒是走动的。求详细代码

参考技术A 就重载OnTimer(),设置一个定时器,每秒触发一次,每触发一次就执行一下你上面那段代码

刷新可拖动 MFC 窗口的问题

【中文标题】刷新可拖动 MFC 窗口的问题【英文标题】:Problems with refreshing a draggable MFC window 【发布时间】:2010-12-20 09:16:10 【问题描述】:

您好。

我必须制作一个可拖动的 MFC 对话框窗口,它有一个背景 - 使用的是:http://www.codeproject.com/KB/graphics/picturewindow.aspx - 并且有几个图片框控件。我尝试了两种方法,虽然它们确实有效,但它们存在一些问题。

第一种方法是“手动”- 在 LBUTTONDOWN 消息上,我检查它是否位于窗口的干净区域,并设置一个标志变量。在 MOUSEMOVE 上,检查标志,如果设置,则调用 MoveWindow 函数,然后调用 Invalidate(1)。在 LBUTTONUP 上,未设置标志。 这种方法可以正常工作并根据需要重新绘制,但不知何故非常慢 - 如果我将光标移动得太快,则窗口会掉落并且不会被拖动,因为光标不再位于窗口上方。

第二种方法是“自动”——我只是调用

DefWindowProc(WM_SYSCOMMAND, SC_MOVE+2,MAKELPARAM(point.x,point.y));

在 LBUTTONDOWN 上,它会处理其余部分,它很快而且从不落后,但是当我将它拖到屏幕边缘时(这样窗口的某些部分变得不可见),当我将它拖回来时,所有控件都变得不可见并且没有刷新,背景还可以。我想这是因为 Invalidate() 在移动过程中没有被调用,因为我实际上是在调用 DefWindowProc() 之后调用它,所以当我按下按钮时,一切都会正确刷新。

我应该如何改进这两种解决方案?我需要它既快速又正确。我可能没有提供一些必需的信息,如果需要,我会补充。

提前致谢。

【问题讨论】:

【参考方案1】:

通过修改第二种方式解决了问题。我在 OnPaint() 中添加了一个完全重绘,为了消除闪烁,我只在拖动过程中使用标志变量重绘。

【讨论】:

以上是关于MFC刷新取到的系统时间的主要内容,如果未能解决你的问题,请参考以下文章

MFC中用UpdateData来刷新数据

MFC中用UpdateData来刷新数据

MFC底层窗口实现

MFC主线程只关注Dialog,需要处理从服务器接收到的数据

运气真不错:3月取到的TeaVM恰好能够运行,之前之后都有问题

Java取当前时间