在自定义类中(基类),  如何使用settimer,  我的消息提取是通过线程实现的

解决方案 »

  1.   

    处理下WM_TIMER消息,或者直接使用SDK的SetTimer:
    UINT_PTR SetTimer(          HWND hWnd,
        UINT_PTR nIDEvent,
        UINT uElapse,
        TIMERPROC lpTimerFunc
    );
      

  2.   


    SetTime 的  hWnd, 参数该如何设置
      

  3.   

    SetTimer中必须要用消息循环,否则是不能用的,只要有消息循环,按一般的方法处理就行了。一个比较简单的做法是让它从CCmdTarget类中派生。
      

  4.   

    是在线程中 SetTimer(NULL,1,1000,NULL);
    这样吗
      

  5.   

    即使用回调函数,也需要消息循环.Timer只会将消息放进消息队列里,调用窗口函数或是回调函数都是都是DispatchMessage完成的.Windows不是实时操作系统,Timer不是中断.
      

  6.   

    貌似在线程中设置的SetTimer不起作用,不知道各位达人有什么高见
      

  7.   

    既然用了线程 还用什么Time
    直接用多线程呗
      

  8.   

    要看是否有消息循环了,你可以自己集成CWnd来实现。
    然后重写ONTIMER
      

  9.   

    m_iTimeEvent = SetTimer(NULL,0,300,NULL);
    MSG msg;
    while (GetMessage(&msg,NULL,0,0))
    {
          switch (msg.message)
        {
    case WM_TIMER:
    {
                      OnTimer();
                     }     }
    }
      

  10.   

    要不就定义全局的时间函数,在线程中应该也是可以用的,记不太清楚了,搂主自己看下
    VOID __stdcall TimeTaskProc(HWND   hwnd,UINT   uMsg,UINT_PTR   idEvent,DWORD   dwTime)   
    {
    KillTimer(NULL,idEvent);
    CScheduleTask  scheduletask;
    scheduletask.CompareTask();
    }
    SetTimer(NULL,2,3000,(TIMERPROC)TimeTaskProc);
      

  11.   


    这个估计可以 ,但现在我吧类重改了 从dialog 派生,只不过,在使用的时候dialog不用显示就可以了!所以提醒各位,起程序框架的时候,尽量用自带的程序框架,如MFC,  这样要好的多,