スレッドセーフなコールバックに問題があります。
void draw_something() { /* draws something */ }
draw_something
問題は、他のコードに関係なく、指定した時間ごとにメイン アプリケーション スレッドを呼び出す方法です (したがって、C# タイマーのように動作し、メイン スレッドで関数を起動します)。以前、CreateWindow を使用して、(メイン スレッドで) SendMessage (別のタイマー スレッドから送信された) からのメッセージを処理する補助ウィンドウを作成していました。
void MainThreadFunction(){
CreateThread(0, NULL, GoProc, NULL, NULL, NULL);
}
DWORD WINAPI GoProc(LPVOID lpParam){
while(1){
SendMessage(auxiliary_window_hWnd, ADDINATIONAL_MESSAGE, 0, 0);
Sleep(30);
}
return 0;
}
したがって、ウィンドウの MessageQueue はセーフスレッド呼び出しを処理しますが、それが非常に効率的でエレガントな方法であるかどうかはわかりません。より良い方法があることは知っていますが(おそらくブースト?)、わかりません。