不过多媒体的timer是立即中断你的程序执行callback函数的,<br>你的程序不管是在什么地方都停下来执行该callback函数,<br>所以在那个函数里面除了PostMessage和该timer有关的函数外,不能执行其他api<br>函数。(你执行其他api会发现好象没问题,但是忙的时候会、运气不好的时候会出错)<br><br>void CALLBACK TimeProc(<br> UINT uID,<br> UINT uMsg,<br> DWORD dwUser,<br> DWORD dw1,<br> DWORD dw2<br> )<br>{<br>PostMessage(((TForm1*)dwUser)->Handle,WM_USER,0,0 );<br>}<br><br><br><br><br>void __fastcall TForm1::FormCreate(TObject *Sender)<br>{<br>id=timeSetEvent(<br> 1000,<br> 0,<br> TimeProc,<br> int(this),<br> TIME_PERIODIC<br> );<br>}<br>//---------------------------------------------------------------------------<br><br><br>void __fastcall TForm1::ON_WM_USER(TMessage& m)<br>{<br>Beep(100,100);<br>}<br><br>void __fastcall TForm1::FormDestroy(TObject *Sender)<br>{<br>if(id)<br> timeKillEvent(id);<br>}<br><br><br>