关于MFC 我做了个五子棋程序,想插个简单的时钟程序

关于MFC 我做了个五子棋程序,想插个简单的时钟程序,第1张

我不要你的代码。

但我可以帮你解决。

你可以用CWnd类的两个定时器函数

分别是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中制作时钟的问题等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zz/9713830.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-01
下一篇 2023-05-01

发表评论

登录后才能评论

评论列表(0条)

保存