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);
以上代码取到了系统时间 也显示出来了 但是我要实现让时间的秒是走动的。求详细代码
刷新可拖动 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主线程只关注Dialog,需要处理从服务器接收到的数据