用ATL作activex  定义一个定时器 LRESULT OnTimer(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& Handled)
{
    num++;
    FireViewChange();
    return 0;
}我想在OnDraw完成时启动定时器
 
if(First)
{
    ::SetTimer(this->m_hWndCD,1,1000,NULL);//放到构造函数里也不行
    First = FALSE;
}return S_OK;//end ondraw可是调试的时候不知道怎么回事,程序根本进不到定时器里,是不是
::SetTimer(this->m_hWndCD,1,1000,NULL);不对啊??这里面有没有一个与mfc的InitDialog类似的东东啊??

解决方案 »

  1.   

    呵呵,我刚做好,不过你用了别忘记给我加分
    具体来说,两种方式:
    一、时间线程方式:
    定义
    static void CALLBACK MyTimerProc(HWND hwnd,UINT uMsg,UINT idEvent,DWORD dwTime);
    UINT m_nTimerID;使用
    m_nTimerID = SetTimer(NULL,NULL,100,MyTimerProc);销毁
    KllTimer(NULL,m_nTimerID);注意:这种方式在实现MyTimerProc函数时里边必须调静态的函数,你可以用另外一个类/文件实现这个函数。
    二、运用TimerGetTime().即启动一个线程,自己实现时间线程我都测试过,没问题的