TMediaPlayer使用上の注意点。
Pauseメソッドは再生の一時停止、再開の両方に使えますが、Pauseで再開させるとメディアの終わりに達しても発生するはずのOnNotifyイベントが発生しなくなります。
再開にPlayメソッドを使うとメディアの終わりにはきちんとOnNotifyイベントが発生します。
どうしてもPauseメソッドを使いたいのなら、OnNotifyイベントの中でNotifyプロパティをTrueにセットし直す必要があります。
ちなみにNotifyイベントはメディアの終わりにだけ発生するわけではなく一時停止したあとの再開やPositionのセット後などにも発生します。
なのでメディアの終わりかどうかを判断するにはMediaPlayerの現在位置がメディアの長さと同じかどうかを判定する必要があります。
DiplayRectプロパティの引数は(Left, Top, Width, Height)
(Left, Top, Right, Bottom)ではないことに注意。
SetBoundsの引数の与え方と同じです。
メディアにビデオがあるかどうかはOpenのあとでDisplayRectを調べて、RightとBottomの値が両方0より大きければビデオあり、そうでなければビデオなしと判断します。
CapabilitiesプロパティにmpUsesWindowsが含まれているかを調べてもだめです。
ビデオのオリジナルの幅と高さを取得するにはOpenのあとでDisplayRectのRightとBottomを調べます。
Rightにオリジナルの幅がBottomにオリジナルの高さが入っています。
DisplayRectの値を操作した後では正しい値が取得できなくなるので、必要ならフォームのprivate部にFiOriginalWidth,
FiOriginalHeightなどのオリジナルの幅と高さの保存用変数を用意する必要があります。
2009-01-28: