演奏イベントをウィンドウメッセージからキューに変更
Mac OS X版からWindows版にメッセージキュークラスSMMsgQueueを移植する。 MIDITrailAppでメッセージキューのインスタンスを保持する。 シーケンサ(SMSequencer)、ライブモニタ(SMLiveMonitor)からのイベント通知方法を 次のように変更する。
メインウィンドウへのウィンドウメッセージ(PostMessage)で通知する。
メッセージキューへのメッセージ登録で通知する。
メッセージキュークラス新規追加。
初期化処理で受け取る引数を、メッセージ送信先ウィンドウハンドルとメッセージIDから、 メッセージキューオブジェクトに変更する。 メッセージオブジェクトをイベント転送オブジェクトに設定する。
メンバからメッセージ送信先ウィンドウハンドルとメッセージIDを削除し、 メンバにメッセージキューのポインタを追加する。
初期化処理で受け取る引数を、メッセージ送信先ウィンドウハンドルとメッセージIDから、 メッセージキューオブジェクトに変更する。
メッセージ通知処理にて、ウィンドウメッセージへのポスト(PostMessage)から、 メッセージキューオブジェクトへのメッセージ登録に変更する。
初期化処理で受け取る引数を、メッセージ送信先ウィンドウハンドルとメッセージIDから、 メッセージキューオブジェクトに変更する。 メッセージオブジェクトをイベント転送オブジェクトに設定する。
メンバにメッセージキューオブジェクトを追加する。
メッセージキュー初期化処理を追加する。
メッセージループ内に、メッセージ処理_SequencerMsgProcの呼び出しを追加する。
ウィンドウメッセージによるシーケンサメッセージ(WM_SEQUENCER_MESSAGE)の受信処理を削除する。
シーケンサとライブモニタにメッセージキューオブジェクトを渡す。
メッセージキューからのメッセージ取り出しとメッセージ処理を実行するメソッドを追加する。
2013/2/24 Win版終了
Windows版では、演奏スレッドから描画スレッドへのイベント通知にウィンドウメッセージを利用してきた。 これをMac OS X版、iOS版と同様にメッセージキューの利用に切り替える。
目的は処理方式の統一。 またウィンドウメッセージでは、送信できるユーザデータが4byte * 2に固定されるため、 送信データの拡張が困難である。