07/02(金)


ひさびさの日記。

前回悩んでた相互friendの件はとっくに解決してたんだけど、日記書いてなかった。
で、どうしたかって言うと、結局 MDxDraw <-> TSrufaceがお互いfriendな状態にした。

そもそも、TSurfaceの派生クラスでプライマリサーフェスのクラスとバックサーフェスのクラスを書けばMDxDrawからTSurfaceを見えるようにする必要はないんだけど、手を抜いたのでこっちも見えるようになっている。

TSurfaceからMDxDrawが見えるのはいい感じだと思う。

TSurfaceのコンストラクタでMDxDrawのSurfaceリストに自分自身を追加する。
デストラクタで、自分自身を削除する。
MDxDrawはDisplayModeが切り替わったらSurfaceリストに登録されているサーフェスを再確保する。

現状ではこうなっています。


今週アタマからDirectInputを組んでる。
と言っても、ダラダラと調査のための捨てプログラムをいくつか書いただけ。
大体解った。
後はコンポ化するだけって状態です。

複数のJoyStickに対応できるようにしようと思ってたんだけど、それも簡単に出来そう。
DirectInputのEnumDeviceCallBackでDIENUM_STOPをリターンしなければ、JoyStickの数分だけ呼び出される。
JoyStickのクラスを書いて、リスト化する予定。


仕事中、あまりにヒマだったので、MIDI、CD-DA関係などを試してみる。
MCIというかVCLのMediaPlayerをいろいろ試してみる。

CD-DAの一曲だけのリピートはOnNotifyイベントでは出来ないようだ。
次の曲に変わるとき(トラックをまたぐとき)にOnNotifyイベントが発生してない。

うーん、困った。
一曲だけのリピートは、MediaPlayer->Positionを監視して切り替わりそうになったらPositionを再設定するって方法を使えば出来るようだが、それしかないのだろうか?
この方法を取るとしたら、メインループ中でPositionを監視するコードを書く必要がある。
あるいは、タイマーで監視するか。
どっちも、ちょっとダサイよねぇ?

メインループの方が妥当かなぁ。
タイマー使った方がメインループ自体はすっきりすると思うけど、全体としてゴテゴテしてしまいそうで・・・

MIDIの場合はトラックとかないので一曲終わったらOnNotifyがかかる。
CD-DAの場合とMIDIの場合で処理が別れるのがイヤだなぁ。
MIDIもOnNotify使わずにPositionなりなんかを監視する方がいいだろうか?
少し、悩むところだねぇ。


戻る