如何实现1毫秒的计时器?我用settimer 发现小单位是10毫秒。
我想建立一个新线程来实现,又不知怎么建立。
希望得到大家的帮助,最好有代码
我想建立一个新线程来实现,又不知怎么建立。
希望得到大家的帮助,最好有代码
解决方案 »
- COM组件向外屏蔽接口
- 曾经酒醉鞭名马,生怕情多累美人。继续散分!
- MFC与c++的区别
- vc中有获得本月月初和月底的函数吗
- 怎麼解決 VC 中 mshflexgrid 內存泄漏的問題??? 謝謝!!!
- vc是不是可以方便的调试小函数?
- OFFICE XP以及金山词霸的漂亮菜单如何实现的??有源代码可以参考吗??
- 开山文件合并的功能是怎么实现的?
- 一个关于CWinThread类用法的问题?
- 在VC6.0中如何获取frame的文档对象
- 我的界面用了actskin4.ocx控件,并且在程序中注册了控件,程序运行之后,可以提示注册成功,但接下来提示控件不能初始化,这是怎么回事
- 管道问题:如何可以使任何人连接我机器上的管道
用GetTickCount函数(API)作计时器,最小单位是1毫秒。
具体用法查CSDN,有无数的例子。
2.添加静态文本控件,对应CString变量m_strTime;
3.在头文件中定义更新时间消息WM_UPDATETIME
#define WM_UPDATETIEM WM_USER + 100
4.声明响应函数OnUpdateTime://在DECLARE_MESSAGE_MAP()前
void OnUpdateTime();
5.在.Cpp文件中映射WM_UPDATETIEM消息
ON_MESSAGE(WM_UPDATETIME,OnUpdateTime)
void CMilliSecondDlg::OnUpdateTime()
{
struct_timeb timebuffer;
char *timeline;
_ftime(&timebuffer);
timeline = ctime(&(timebuffer.time));
m_strTime.Format("The time is:%.19s.%hu%s",timeline,timebuffer.millitm,&timeline[20]);
UpdateData(FALSE);
}
UINT ShowTimeProc(LPVOID lParam)//定时器函数
{
CMilliSecondDlg* pDlg = (CMilliSecondDlg*)lParam;
DWORD dwStart,dwStop;
dwStop = GetTickCount();
while(TRUE)
{
dwStart = dwStop;
::SendMessage(pDlg->m_hWnd,WM_UPDATETIME,0,0);
do
{
dwStop = GetTickCoun();
}
while(dwStop - 50 < dwStart);
}
return 0;
}
在对话框的OnInitDialog函数中开启定时器
AfxBeginThread(ShowTimeProc,this);
//以上代码摘自《实效编程百例》
看MSDN吧。或者我这里有个简单的例子。
#include <windows.h>#include <mmsystem.h>
#include <stdio.h>
#include <conio.h>void CALLBACK MyTimeProc( UINT uID, UINT uMsg, DWORD dwUser, DWORD dw1,
DWORD dw2)
{
//Your code.
printf("Time out\n");}int main()
{
MMRESULT tId=timeSetEvent(10,1,(LPTIMECALLBACK)MyTimeProc,0,TIME_PERIODIC|TIME_CALLBACK_FUNCTION);
getch();timeKillEvent(tId);
return 0;
}http://vip.6to23.com/NowCan1/tech/timer.htm