DirectMusicが再生してくれるのを組んでますが、どうやればいいでしょうか?
ファイルは「OPENFILENAME」構造体から得ています
コード: 全て選択
Dim ofn As OPENFILENAME
Dim hFile As HANDLE
Dim buf[MAX_PATH] As WordPtr
ZeroMemory(VarPtr(ofn), Len(ofn))
ofn.lStructSize=Len(ofn)
ofn.hwndOwner=hMainWnd
ofn.lpstrInitialDir=".\EPL\"
ofn.lpstrTitle="オーディオを開く"
ofn.lpstrFile=buf
ofn.lpstrFilter=Ex"WAVオーディオ(*.WAV)\0*.wav\0Vorbisオーディオ(*.OGG)\0*.ogg\0"
ofn.nMaxFile=MAX_PATH
ofn.Flags = OFN_NONETWORKBUTTON or OFN_READONLY or OFN_ALLOWMULTISELECT or OFN_EXPLORER
SetDlgItemText(hMainWnd,ID_FNAME,buf)
hFile=CreateFile(buf,GENERIC_READ,FILE_SHARE_READ,ByVal(0),OPEN_EXISTING or OPEN_ALWAYS,FILE_ATTRIBUTE_READONLY or FILE_FLAG_RANDOM_ACCESS or FILE_FLAG_SEQUENTIAL_SCAN,NULL)
GetOpenFileName(ofn)
Dim i As Long
Dim plStr[MAX_PATH] As Byte
Dim lvItem As LVITEM
i=lstrlen(buf)-1
Do
If buf Then
lvItem.mask=LVIF_TEXT or LVIF_PARAM
lvItem.pszText=buf+i+1
lvItem.iItem=0
lvItem.iSubItem=0
lvItem.lParam=pln+1
SendDlgItemMessage(hMainWnd,PlayList,LVM_INSERTITEM,0,VarPtr(lvItem))
Exit Do
End If
i=i-1
If i<0 Then Exit Do
Loop
dmA9->Stop()
dmA9->Load(buf)
If SendDlgItemMessage(hMainWnd,CheckBox1,BM_GETCHECK,0,0)=BST_CHECKED Then
dmA9->SetRepeats(&HFFFFFFF)
End If
SetDlgItemText(hMainWnd,ID_FNAME,buf)
dmA9->Play()
ファイルは「OPENFILENAME」構造体から得ています
コード: 全て選択
Sub MainWnd_PlayList_DblClick(ByRef nmListView As NMLISTVIEW)
Dim buf As Byte
buf=SendDlgItemMessage(hMainWnd,PlayList,LB_GETTEXT,0,0)
dmA9_pl->Load(buf)
If SendDlgItemMessage(hMainWnd,CheckBox1,BM_GETCHECK,0,0)=BST_CHECKED Then
dmA9_pl->SetRepeats(&HFFFFFFF)
End If
SetDlgItemText(hMainWnd,ID_FNAME,buf)
dmA9_pl->Play()
End Sub
このコードは、Load関数でファイル名を認識する部分がバグになっています
DirectMusicの宣言は別の場所においてありますので宣言済みだけがあります
-------------------------------------------------------
PlayerEleanore Project
http://www.zzda.com/eleanore
mako20
-------------------------------------------------------