读书人

怎么获得quot;实时quot;时间(不按按扭)

发布时间: 2012-03-07 09:13:51 作者: rapoo

如何获得"实时"时间(不按按扭)?
当系统时间发生变化时,不按任何按扭,我所要显示的时间也能发生变化!要怎样做才好

[解决办法]
设置一个SetTimer,每秒钟读一次系统时间,并显示出来.
[解决办法]
SetTimer是最快的,MFC有事件WM_TIMER响应.

SetTimer(2,1000,0);//设一个时钟.

void CXXXX::OnTimer(UINT nIDEvent)
{
if (2==nIDEvent)
{//处理代码

}
}
---------------------
如果要精度更高的,则需要用一个多线程..
由线程去处理:
LARGE_INTEGER m_nFreq;
LARGE_INTEGER m_nBeginTime;
LARGE_INTEGER nEndTime;
QueryPerformanceFrequency(&m_nFreq); // 获取时钟周期
QueryPerformanceCounter(&m_nBeginTime); // 获取时钟计数
Sleep(100);
QueryPerformanceCounter(&nEndTime);
cout < < (nEndTime.QuadPart-m_nBeginTime.QuadPart)*1000/m_nFreq.QuadPart < < endl;

[解决办法]
int CMainFrame::OnCreate()
{
SetTimer(1,1000,NULL):
return 0;
}
void CXXXX::OnTimer(UINT nIDEvent)
{
CTime time;
time=CTime::GetCurrentime();
CString s=time.Format( "%H:%M:%S ");
m_wndStatusBar.SetPaneText(m_wndStatusBar.CommandToIndex(ID_INDICATOR_CLOCK),s);
CFrameWnd::OnTimer(nIDEnent);
}//处理代码

[解决办法]
获取当前系统时间:
COleDateTime dtCurrent;
dtCurrent = COleDateTime::GetCurrentTime();
CString strData = dtCurrent.Format( "%Y-%m-%d %H-%M-%S ");
用 OnTimer 来定时刷新显示

读书人网 >VC/MFC

热点推荐