我自己写一个类 (没有继承任何类)
在代码中可以用SetTimer()设置计时器;
但添加不了OnTimer(UINT nIDEvent) 响应函数;
我是只菜菜菜鸟,望各位大虾踢教

解决方案 »

  1.   

    在事件WM_TIMER上。进入Class Wizard,在Message Maps中,选中你的类,右边的Messages选择WM_TIMER,按增加函数按钮即可。
      

  2.   

    可以手工添加:
    在.h文件中声明如下函数:
    ClassView中在类名上点右键,选Add Member Function,添加如下函数:
    afx_msg void OnTimer( UINT nIDEvent );
    在.cpp文件BEGIN_MESSAGE_MAP块中手工加入ON_WM_TIMER( )
      

  3.   

    没有继承任何类的话,我说的如上做法也没有办法。在MFC中,要响应消息必须从CCmdTarget继承。
      

  4.   

    在该类中写一个timer()函数,使用外部的定时器调用timer()
      

  5.   

    呵呵,楼上的算是个方法 不过想完全的包装的话,还是在类里面创建一个窗口,然后就可以接受Timer了
      

  6.   

    试试这样:
    在你的类的cpp文件中添加一个 LRESULT TimerProc()函数,具体参数忘了。该函数相当于OnTimer函数。
    在你SetTimer时,参数中的回调函数参数不用NULL,而使用自己写的这个函数。具体参数看一下MSDN吧。
    应该可以的。
      

  7.   

    楼上,怎么利用回调函数阿?还有在worker threads里怎么进行定时操作阿?
      

  8.   

    多谢楼上帮过我的各位大虾`~~~ ^-^
    我尝试过用OnTimerProc(...)回调函数的确可行不过在这类型过程回调函数中只可能使用::开头的平台函数,
    那如果我在回调函数中调用 使用计时器的类中的函数或变量,
    应该如果调用??
      

  9.   

    VOID CALLBACK OnTimerProc(HWND hwnd,UINT uMsg,UINT_PTR idEvent,DWORD dwTime)
    {
        .... //内容
        ::KillTimer(NULL,1);
    }
    void ClassA::fun() {
        ::SetTimer(NULL,1,2000,(TIMERPROC)OnTimerProc); 
    }出现有两个问题
    1、在OnTimerProc的内容中如何调用ClassA的资源?
    2、KillTimer后计时器还在不停响应,我写错了吗?各位大虾,在此先谢过了
      

  10.   

    在事件WM_TIMER上。进入Class Wizard,在Message Maps中,选中你的类,右边的Messages选择WM_TIMER,按增加函数按钮即可。