ページ 11

AB5における、AB424サンプルのCDPlayerの動作について

Posted: 2006年8月08日(火) 15:52
by MUGI
Sub MainWnd_PlayButton_Click()内において、
'トラックバーの範囲を設定
Dim nMax As Integer

nMax=(MCI_MSF_MINUTE(msp.dwReturn)*60 + MCI_MSF_SECOND(msp.dwReturn)) * 10
やはり、nMaxは、AB424と同じく、異常な値となります。

SendMessage(hTrackBar,TBM_SETRANGE,0,MAKELONG(0,nMax)) を
SendMessage(hTrackBar,TBM_SETRANGE,0,MAKELONG(0,(MCI_MSF_MINUTE(msp.dwReturn)*60 + MCI_MSF_SECOND(msp.dwReturn)) * 10)) にすると問題ありません。
AB424でのバグがそのままのようです。

また、これはMCI側の問題だと思いますが、トラックバーを移動しても曲の最初からしか再生されません。
動作の安定化の為に一度止めると正しく動きます。
Dim dwWk As Dword '動作安定化の為のダミー
mciSendCommand(mop.wDeviceID, MCI_STOP, MCI_NOTIFY, dwWk) '停止コマンド追加
を、
bErr=mciSendCommand(mop.wDeviceID,MCI_SEEK,MCI_TO,mciSeekParms)
の前に追加。
コードサンプルとして、CDPlayerをパッケージに含められる場合は、検討していただければと思います。

Posted: 2006年8月08日(火) 19:38
by 山本
ご報告ありがとうございます。

厳密に型サイズを重視しすぎた仕様が原因で発生する不具合のようです。

必要に応じて、要求される型に暗黙的に変換し、このような問題を回避するための修正を行おうと思います。

次回のバージョンアップで対処いたしますので、今しばらくお待ちください。

Posted: 2006年9月05日(火) 16:37
by MUGI
> 次回のバージョンアップで対処いたしますので、今しばらくお待ちください。
ありがとうございます。

CP2で、424のサンプルのCDPlayerで、演算正しく行われているのを確認しました。
あとこのサンプルで問題なのは、トラックバーを右端までスライドしても、曲の終わりと同期していないことだけですね。
これは、最初に書いた
Dim dwWk As Dword '動作安定化の為のダミー
mciSendCommand(mop.wDeviceID, MCI_STOP, MCI_NOTIFY, dwWk) '停止コマンド追加
を、
bErr=mciSendCommand(mop.wDeviceID,MCI_SEEK,MCI_TO,mciSeekParms)
の前に追加すると完璧な同期となります。
コードサンプルとして収録されるのであれば、検証していただければと思います。