#include <windows.h>
#include <iostream>
using namespace std;
void CALLBACK TimerProc( HWND hwnd, UINT uMsg, UINT idEvent, DWORD dwTime );
DWORD WINAPI ThreadProc(LPVOID lpParameter);void main()
{
::CreateThread( NULL, 0, ThreadProc, NULL, 0, NULL );
Sleep( 10000 ); }void CALLBACK TimerProc( HWND hwnd, UINT uMsg, UINT idEvent, DWORD dwTime )
{
cout << "TimerProc running." << endl;
}DWORD WINAPI ThreadProc(LPVOID lpParameter)
{
cout << "ThreadProc running." <<endl;
SetTimer( NULL, 1, 10, TimerProc ); return 0;
}为什么没有定时的执行TimeProc函数,该如何修改?谢谢!!

解决方案 »

  1.   

    程序里没有消息循环,接收不到WM_TIMER消息。
    google一下消息循环
      

  2.   

    SetTimer( NULL, 1, 10, TimerProc );
    这个函数如果是SetTimer( NULL, 1, 10, NULL );这时才发送WM_TIMER消息吧,这时才需要消息循环啊。不知我理解的对不对。
      

  3.   

    上面的理解不对:当指定回调函数处理定时器时,调用这个回调的是窗口的默认处理程序,所以你还是要在调用线程中分配消息的,你的代码中调用线程一完成SetTimer之后就退出了,当然不用调用回调了。