我不要你的代码。
但我可以帮你解决。
分别是UINT SetTimer(UINT nIDEvent, UINT nElapse, void (CALLBACK EXPORTlpfnTimer) (HWND, UINT, UINT, DWORD) );
还有一个
BOOL KillTimer( int nIDEvent );
具体用法:
SetTimer()
CWnd::SetTimer
UINT SetTimer(UINT nIDEvent, UINT nElapse, void (CALLBACK EXPORTlpfnTimer) (HWND, UINT, UINT, DWORD) );
返回值:
如果函数成功,则返回新定时器的标识符。应用程序可以将这个值传递给KillTimer成员函数以销毁定时器。如果成功,则返回非零值;否则返回0。
参数: nIDEvent 指定了不为零的定时器标识符。
nElapse 指定了定时值;以毫秒为单位。
lpfnTimer 指定了应用程序提供的TimerProc回调函数的地址,该函数被用于处理WM_TIMER消息。如果这个参数为NULL,则WM_TIMER消息被放入应用程序的消息队列并由CWnd对象来处理。
说明:
这个函数设置一个系统定时器。指定了一个定时值,每当发生超时,则系统就向设置定时器的应用程序的消息队列发送一个WM_TIMER消息,或者将消息传递给应用程序定义的TimerProc回调函数。
lpfnTimer回调函数不需要被命名为TimerProc,但是它必须按照如下方式定义:
void CALLBACK EXPORT TimerProc(
HWND hWnd, // 调用SetTimer的CWnd的句柄
UINT nMsg, // WM_TIMER
UINT nIDEvent // 定时器标识
DWORD dwTime // 系统时间
);
定时器是有限的全局资源;因此对于应用程序来说,检查SetTimer返回的值以确定定时器是否可用是很重要的。
KillTimer()
CWnd::KillTimer
BOOL KillTimer( int nIDEvent );
返回值:
指定了函数的结果。如果事件已经被销毁,则返回值为非零值。如果KillTimer成员函数不能找到指定的定时器事件,则返回0。
参数: nIDEvent 传递给SetTimer的定时器事件值。
说明:
销毁以前调用SetTimer创建的用nIDEvent标识的定时器事件。任何与此定时器有关的未处理的WM_TIMER消息都从消息队列中清除。
你既然会用MFC写五子棋程序。
那么你也一定会添加消息映射吧
有了上面的知识,你应该知道在什么窗口中加WM_TIMER的消息映射了吧
哈哈,祝你写的愉快
如果是说统计运算时间,可以用GetTickCount函数来计算。如果是说要定时运行之类的,那可以用SetTimer函数设置一个定时器,然后响应WM_TIMER消息,在里面检测时间来完成所要的 *** 作。
设置定时器,添加ontimer函数,在添加windows消息处理那个地方添加ontimer函数,初始化里添加
SetTimer( 1, 1, NULL ); //为时间设置定时器1秒
你好这是我用mfc编写的一个时钟程序我不用你存话费你采纳就ok了别不采纳我可是花了很长时间来弄的源程序//这是关键代码voidCClockView::OnDraw(CDCpDC){ CClockDocpDoc=GetDocument(); ASSERT_VALID(pDoc); //TODO:adddrawcodefornativedatahere CBitmapbg; bgLoadBitmap(IDB_BITMAP1); CDCdc; dcCreateCompatibleDC(pDC); dcSelectObject(bg); pDC->BitBlt(0,0,400,400,&dc,0,0,SRCCOPY); CTimetm; tm=CTime::GetCurrentTime();//得到系统的时分秒inti=tmGetMinute()-1;//60 intj=tmGetHour();//24 intn=tmGetSecond();//60/ CStringstr; strFormat("%d:%d",j,i); MessageBox(str);/ //2460 floatmin=(float)(i-14)/60231415; floathour=(float)(j-3)/12231415;//角度 floatsec=(float)(n-14)/60231415; //原点位置intorg_x=200; intorg_y=200; //时针 inthour_ar=90;//长度 inth_x=hour_arcos(hour)+200; inth_y=hour_arsin(hour)+200; //分针 intmin_ar=140;//长度 intm_x=min_arcos(min)+200; intm_y=min_arsin(min)+200; //秒针 intsec_ar=170;//长度 ints_x=sec_arcos(sec)+200; ints_y=sec_arsin(sec)+200;CPenp1(PS_SOLID,4,RGB(100,100,100)); CPenpenOld=(CPen)pDC->SelectObject(p1); pDC->MoveTo(org_x,org_y); pDC->LineTo(m_x,m_y); CPenp2(PS_SOLID,3,RGB(200,100,100)); pDC->SelectObject(p2); pDC->MoveTo(org_x,org_y); pDC->LineTo(h_x,h_y);CPenp3(PS_SOLID,2,RGB(150,100,100)); pDC->SelectObject(p3); pDC->MoveTo(org_x,org_y); pDC->LineTo(s_x,s_y); SetTimer(1,1000,NULL);}voidCClockView::OnTimer(UINTnIDEvent){ //TODO:Addyourmessagehandlercodehereand/orcalldefault this->RedrawWindow(); CView::OnTimer(nIDEvent);}
呵呵,同道中人,我也做过一个小闹钟~~~
#include <timeh>
time_t tikTime;
time(&tikTime);
--------------------------------
哦,你要用这个是吧,那这样
CTime tikTime = CTime::GetCurrentTime();
然后
int hour = tikTimeGetHour();
int minute = tikTimeGetMinute();
int second = tikTimeGetSecond();
以上就是关于关于MFC 我做了个五子棋程序,想插个简单的时钟程序全部的内容,包括:关于MFC 我做了个五子棋程序,想插个简单的时钟程序、如何在MFC中设置一个程序的运行时间、MFC中制作时钟的问题等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)