コールバック・ルーチン

すべてのコールバック・ルーチンは,主プログラムとは別のスレッド内で実行されます。このため,マルチスレッドに関連するすべての問題が発生します。特に,データの共有,ウィンドウへの描画,および I/O の実行は,正しく調整し,制御しなくてはなりません。Visual Fortran サンプルPOKER.F90 (...\DF98\SAMPLES\QuickWin\POKER フォルダ) は,共有リソース参照の制御を示している良い例です。

QuickWin コールバック・ルーチンは,メニュー・コールバックとマウス・コールバックのどちらについても,最小限の処理を行って返るようにしなくてはなりません。コールバック処理中はメッセージの処理が行われないため,プログラムは応答しなくなったように見えます。このため,迅速に返ることが重要となるのです。

コールバック中で多くの処理時間が必要な場合,その作業を行うために別のスレッドを開始するべきです。スレッドは Win32 API の CreateThread を呼び出すことで作成できます (スレッドの作成と使用についての詳細は,「マルチスレッド・アプリケーションの作成」を参照)。コールバック・ルーチンが新しいスレッドを開始しない場合,コールバックは処理を終えるまでは再び呼び出されることはありません。