本帖最后由 hanyinlong 于 2010-12-14 20:47:09 编辑

解决方案 »

  1.   

    窗口创建完就不能吧,因为这个也是窗口消息WM_TIMER
      

  2.   

    SetTimer可以用在任何地方,不需要HWND,但要提供回调函数。
    SetTimer(NULL, TIMER_ID, ??, TimerProc);
      

  3.   

    不要问人PreCreateWindow和OnCreate的区别!
    自己在这两个函数设置断点,DEBUG TRACE一下就可以了,最好看看调用堆栈,编程就是要多动手。
      

  4.   

    调用PreCreateWindow函数和构造函数时,该窗口对象的窗口句柄m_hWnd还未有效,而Settimer需要指定响应定时器的窗口句柄(如果不是采用回调函数来响应定时器的话),CWnd类的成员函数Settimer自动指定该对象的窗口句柄m_hWnd。所以在窗口未创建时(PreCreateWindow和构造函数),调用Settimer,会出现异常。
    OnCreate函数是响应WM_CREATE的处理函数,此时窗口已经注册并且创建,窗口句柄m_hWnd有效。在OnCreate中调用Settimer是可以的。
      

  5.   

    调用PreCreateWindow函数和构造函数时,该窗口对象的窗口句柄m_hWnd还未有效,而Settimer需要指定响应定时器的窗口句柄(如果不是采用回调函数来响应定时器的话),CWnd类的成员函数Settimer自动指定该对象的窗口句柄m_hWnd。所以在窗口未创建时(PreCreateWindow和构造函数),调用Settimer,会出现异常。
    OnCreate函数是响应WM_CREATE的处理函数,此时窗口已经注册并且创建,窗口句柄m_hWnd有效。在OnCreate中调用Settimer是可以的。
      

  6.   

    调用PreCreateWindow函数和构造函数时,该窗口对象的窗口句柄m_hWnd还未有效,而Settimer需要指定响应定时器的窗口句柄(如果不是采用回调函数来响应定时器的话),CWnd类的成员函数Settimer自动指定该对象的窗口句柄m_hWnd。所以在窗口未创建时(PreCreateWindow和构造函数),调用Settimer,会出现异常。
    OnCreate函数是响应WM_CREATE的处理函数,此时窗口已经注册并且创建,窗口句柄m_hWnd有效。在OnCreate中调用Settimer是可以的。
      

  7.   

    SetTimer可以用在任何地方,不需要HWND,但要提供回调函数。
    SetTimer(NULL, TIMER_ID, ??, TimerProc);
      

  8.   

    Win32函数SetTimer 需要有效的窗口句柄才能调用 支持#7