如何实现1毫秒的计时器?我用settimer 发现小单位是10毫秒。
我想建立一个新线程来实现,又不知怎么建立。
希望得到大家的帮助,最好有代码

解决方案 »

  1.   

    用CreateThread建立新线程。
    用GetTickCount函数(API)作计时器,最小单位是1毫秒。
    具体用法查CSDN,有无数的例子。
      

  2.   

    1.生成对话框MilliSecond;
    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);
    //以上代码摘自《实效编程百例》
      

  3.   

    应该是timeSetEvent吧。
    看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
      

  4.   

    在CSDN上搜索一遍吧,以前看到过这方面的讨论,如需要我可以发给你