现在在一个控制台程序中使用定时器,这个在网上也有实例,但是问题是,我希望在自定义的定时器回调函数中访问一个对象,但是如何将这个对象指针传递给定时器回调函数?
    

解决方案 »

  1.   

    本身WM_TIMER的wparam与lparam都是有用的,你没必要传递,使用全局的变量、类、结构体即可。
      

  2.   

    http://baike.baidu.com/view/5913942.htm
    --------------------------------
    靠!万能的杜娘,在这个网页找到了:
    dwUser: DWORD; //可为任意变量或者结构地址,他会在定时器触发的时候回传给回调函数 
    试试这个再说。
      

  3.   


    UINT_PTR SetTimer(
        HWND hWnd,
        UINT_PTR nIDEvent,
        UINT uElapse,
        TIMERPROC lpTimerFunc
    );
    lpTimerFunc的原型为
    VOID CALLBACK TimerProc(
        HWND hwnd,
        UINT uMsg,
        UINT_PTR idEvent,
        DWORD dwTime
    );
    你可以把一个对象的指针当 nIDEvent 塞给他,他会在回调里面再塞给你。
    hwnd可以传NULL,如果你不想创建窗口
      

  4.   

    既然是多个线程,为什么要在定时器里处理,的确,我一般遇到的代码都是如LS所述,ID传指针,但是我个人认为还不如自己阻塞来得好。
      

  5.   

    自己阻塞就是写死循环,不到时间不退出。DWORD dw1 = GetTickCount();
    while(GetTickCount()-dw1 < 100);
    //100ms后