MCIウィンドウで動画プレイヤーを作りたい

ActiveBasicでのプログラミングでわからないこと、困ったことなどがあったら、ここで質問してみましょう(質問を行う場合は、過去ログやWeb上であらかじめ問題を整理するようにしましょう☆)。
返信する
メッセージ
作成者
提灯鮟鱇

MCIウィンドウで動画プレイヤーを作りたい

#1 投稿記事 by 提灯鮟鱇 »

件名そのままなんですがサンプルが全く無くて困ってます。
Win32プログラミング講座のステップ30でただ再生するだけなら出来るのですが
それ以外のことが全く出来ない。
検索してるとMCIWndCreateを使えば色々と出来そうなので使おうと思ったのですが

コード: 全て選択


Declare Function MCIWndCreate Lib "msvfw32.dll" ( _
		ByVal hwndParent As Long, _
		ByVal hInstance As Long, _
		ByVal dwStyle As Long, _
		ByVal szFile As String _
		) As Long
と定義したまでは良かったのですが、MCIWndCreateのhInstanceで躓きました。
インスタンスって何なのでしょう?検索してもさっぱりわかりません。

他言語のサンプルは幾つかあるのですがActiveBasicのサンプルが全く無い。
仮にhInstanceが解決してもその先もさっぱり。
WNDCLASSでウィンドウクラスの登録して、CreateWindowでウィンドウを作るのかなぁという事までは分かったのですが。
なので簡単なサンプルでよいので誰か教えてくれないでしょうか?
厚かましいお願いかもしれませんが宜しくお願いします。
M.K
記事: 18
登録日時: 2005年6月07日(火) 22:06
お住まい: 長崎県

Re:MCIウィンドウで動画プレイヤーを作りたい

#2 投稿記事 by M.K »

こんにちは、

「インスタンスハンドル」とは、アプリ自身の識別IDと思ってください。

で、インスタンスハンドルは

  GetModuleHandle関数(ABで定義済み)を使えば取得できます。

   hInstance部分に...

    GetModuleHandle(0)と渡してやればいいようです。

MCIの情報については、C言語ですが...
http://www.kumei.ne.jp/c_lang/sdk2/sdk_166.htm
が参考になるかと思います。
提灯鮟鱇

Re:MCIウィンドウで動画プレイヤーを作りたい

#3 投稿記事 by 提灯鮟鱇 »

GetModuleHandle(0)でよかったんですね。一度試した事がありました。
でも、他が完成してないので確認しようがありませんでした。

http://www.kumei.ne.jp/c_lang/sdk2/sdk_166.htm
検索しまくったので、ここも既に見たことがあったのですが
CをどうやってABに直したらいいか分かりません。
サンプルがあればそこから学んだり、改造したりできるので
簡単でもいいから具体的なABのサンプルが欲しいのです。
どうか宜しくお願いします。
NoWest
記事: 264
登録日時: 2005年5月31日(火) 10:52
お住まい: 高知
連絡する:

Re:MCIウィンドウで動画プレイヤーを作りたい

#4 投稿記事 by NoWest »

提灯鮟鱇 さんが書きました:> http://www.kumei.ne.jp/c_lang/sdk2/sdk_166.htm
> 検索しまくったので、ここも既に見たことがあったのですが
> CをどうやってABに直したらいいか分かりません。
> サンプルがあればそこから学んだり、改造したりできるので
> 簡単でもいいから具体的なABのサンプルが欲しいのです。
> どうか宜しくお願いします。
MCIウィンドウはそれほど難しいものではありません。
下のコードが定義ファイルですが、見て分かるとおり直感的に操作できるように専用のマクロがそれぞれ準備されています。


プログラミングの流れは

MCIWndCreate()でウィンドウを作成し、
そのウィンドウに対してMCIWndOpen()とかMCIWndPlay()、MCIWndStop()などで
MCIメッセージを送信して制御します。

用がなくなったらMCIWndDestroyを呼び出してウィンドウを破棄します。
その時にMCIWndCloseでファイルを閉じるのを忘れないでください。

ずっと下のほうに簡単なサンプルを乗せます。


あまり知られていないですがMCIWNDCreate関数はC言語呼び出し規約なので
Libの前にCDECLを入れてください。

コード: 全て選択

Declare Function MCIWndCreate CDECL Lib "MSVFW32" Alias "MCIWndCreateA" (hwndParent As HWND, hInstance As HINSTANCE, dwStyle As DWord, szFile As BytePtr) As HWND
Declare Function MCIWndRegisterClass CDECL Lib "MSVFW32" () As Long

'Flags for the MCIWndOpen command
Const MCIWNDOPENF_NEW = &H0001 'open a new file

'window styles
Const MCIWNDF_NOAUTOSIZEWINDOW = &H0001 'when movie size changes
Const MCIWNDF_NOPLAYBAR = &H0002 'no toolbar
Const MCIWNDF_NOAUTOSIZEMOVIE = &H0004 'when window size changes
Const MCIWNDF_NOMENU = &H0008 'no popup menu from RBUTTONDOWN
Const MCIWNDF_SHOWNAME = &H0010 'show name in caption
Const MCIWNDF_SHOWPOS = &H0020 'show position in caption
Const MCIWNDF_SHOWMODE = &H0040 'show mode in caption
Const MCIWNDF_SHOWALL = &H0070 'show all

Const MCIWNDF_NOTIFYMODE = &H0100 'tell parent of mode change
Const MCIWNDF_NOTIFYPOS = &H0200 'tell parent of pos change
Const MCIWNDF_NOTIFYSIZE = &H0400 'tell parent of size change
Const MCIWNDF_NOTIFYERROR = &H1000 'tell parent of an error
Const MCIWNDF_NOTIFYALL = &H1F00 'tell all

Const MCIWNDF_NOTIFYANSI = &H0080

'The MEDIA notification includes a text string.
'To receive notifications in ANSI instead of unicode set the
'MCIWNDF_NOTIFYANSI style bit. The macro below includes this bit
'by default unless you define UNICODE in your application.

Const MCIWNDF_NOTIFYMEDIA = &H0880 'tell parent of media change
Const MCIWNDF_NOTIFYMEDIAW = &H0800 'tell parent of media change

Const MCIWNDF_RECORD = &H2000 'Give a record button
Const MCIWNDF_NOERRORDLG = &H4000 'Show Error Dlgs for MCI cmds?
Const MCIWNDF_NOOPEN = &H8000 'Don't allow user to open things

'can macros
Function MCIWndCanPlay(hwnd As HWND) As Long
	MCIWndCanPlay = SendMessage(hwnd,MCIWNDM_CAN_PLAY,0,0)
End Function

Function MCIWndCanRecord(hwnd As HWND) As Long
	MCIWndCanRecord = SendMessage(hwnd,MCIWNDM_CAN_RECORD,0,0)
End Function

Function MCIWndCanSave(hwnd As HWND) As Long
	MCIWndCanSave = SendMessage(hwnd,MCIWNDM_CAN_SAVE,0,0)
End Function

Function MCIWndCanWindow(hwnd As HWND) As Long
	MCIWndCanWindow = SendMessage(hwnd,MCIWNDM_CAN_WINDOW,0,0)
End Function

Function MCIWndCanEject(hwnd As HWND) As Long
	MCIWndCanEject = SendMessage(hwnd,MCIWNDM_CAN_EJECT,0,0)
End Function

Function MCIWndCanConfig(hwnd As HWND) As Long
	MCIWndCanConfig = SendMessage(hwnd,MCIWNDM_CAN_CONFIG,0,0)
End Function

Function MCIWndPaletteKick(hwnd As HWND) As Long
	MCIWndPaletteKick = SendMessage(hwnd,MCIWNDM_PALETTEKICK,0,0)
End Function

Function MCIWndSave(hwnd As HWND, szFile As BytePtr) As Long
	MCIWndSave = SendMessage(hwnd, MCI_SAVE, 0, szFile)
End Function

Function MCIWndSaveDialog(hwnd As HWND) As Long
	MCIWndSaveDialog = MCIWndSave(hwnd, -1)
End Function

'if you dont give a device it will use the current device....
Function MCIWndNew(hwnd As HWND, lp As VoidPtr) As Long
	MCIWndNew = SendMessage(hwnd, MCIWNDM_NEW, 0, lp)
End Function

Function MCIWndRecord(hwnd As HWND) As Long
	MCIWndRecord = SendMessage(hwnd, MCI_RECORD, 0, 0)
End Function

Function MCIWndOpen(hwnd As HWND, sz As VoidPtr, f As DWord) As Long
	MCIWndOpen = SendMessage(hwnd, MCIWNDM_OPEN, f,sz)
End Function

Function MCIWndOpenDialog(hwnd As HWND) As Long
	MCIWndOpenDialog = MCIWndOpen(hwnd, -1, 0)
End Function

Function MCIWndClose(hwnd As HWND) As Long
	MCIWndClose = SendMessage(hwnd, MCI_CLOSE, 0, 0)
End Function

Function MCIWndPlay(hwnd As HWND) As Long
	MCIWndPlay = SendMessage(hwnd, MCI_PLAY, 0, 0)
End Function

Function MCIWndStop(hwnd As HWND) As Long
	MCIWndStop = SendMessage(hwnd, MCI_STOP, 0, 0)
End Function

Function MCIWndPause(hwnd As HWND) As Long
	MCIWndPause = SendMessage(hwnd, MCI_PAUSE, 0, 0)
End Function

Function MCIWndResume(hwnd As HWND) As Long
	MCIWndResume = SendMessage(hwnd, MCI_RESUME, 0, 0)
End Function

Function MCIWndSeek(hwnd As HWND, lPos As Long) As Long
	MCIWndSeek = SendMessage(hwnd, MCI_SEEK, 0, lPos)
End Function

Function MCIWndEject(hwnd As HWND) As Long
	MCIWndEject = SendMessage(hwnd, MCIWNDM_EJECT, 0, 0)
End Function

Function MCIWndHome(hwnd As HWND) As Long
	MCIWndHome = MCIWndSeek(hwnd, MCIWND_START)
End Function

Function MCIWndEnd(hwnd As HWND) As Long
	MCIWndEnd = MCIWndSeek(hwnd, MCIWND_END)
End Function

Function MCIWndGetSource(hwnd As HWND, ByRef prc As RECT) As Long
	MCIWndGetSource = SendMessage(hwnd, MCIWNDM_GET_SOURCE, 0, VarPtr(prc))
End Function

Function MCIWndPutSource(hwnd As HWND, ByRef prc As RECT) As Long
	MCIWndPutSource = SendMessage(hwnd, MCIWNDM_PUT_SOURCE, 0, VarPtr(prc))
End Function

Function MCIWndGetDest(hwnd As HWND, ByRef prc As RECT) As Long
	MCIWndGetDest = SendMessage(hwnd, MCIWNDM_GET_DEST, 0, VarPtr(prc))
End Function

Function MCIWndPutDest(hwnd As HWND, ByRef prc As RECT) As Long
	MCIWndPutDest = SendMessage(hwnd, MCIWNDM_PUT_DEST, 0, VarPtr(prc))
End Function

Function MCIWndPlayReverse(hwnd As HWND) As Long
	MCIWndPlayReverse = SendMessage(hwnd, MCIWNDM_PLAYREVERSE, 0, 0)
End Function

Function MCIWndPlayFrom(hwnd As HWND, lPos As Long) As Long
	MCIWndPlayFrom = SendMessage(hwnd, MCIWNDM_PLAYFROM, 0, lPos)
End Function

Function MCIWndPlayTo(hwnd As HWND, lPos As Long) As Long
	MCIWndPlayTo = SendMessage(hwnd, MCIWNDM_PLAYTO, 0, lPos)
End Function

Sub MCIWndPlayFromTo(hwnd As HWND, lStart As Long, lEnd As Long)
	MCIWndSeek(hwnd, lStart)
	MCIWndPlayTo(hwnd, lEnd)
End Sub

Function MCIWndGetDeviceID(hwnd As HWND) As DWord
	MCIWndGetDeviceID = SendMessage(hwnd, MCIWNDM_GETDEVICEID, 0, 0)
End Function

Function MCIWndGetAlias(hwnd As HWND) As DWord
	MCIWndGetAlias = SendMessage(hwnd, MCIWNDM_GETALIAS, 0, 0)
End Function

Function MCIWndGetMode(hwnd As HWND, lp As BytePtr, len As DWord) As Long
	MCIWndGetMode = SendMessage(hwnd, MCIWNDM_GETMODE, len, lp)
End Function

Function MCIWndGetPosition(hwnd As HWND) As Long
	 = SendMessage(hwnd, MCIWNDM_GETPOSITION, 0, 0)
End Function

Function MCIWndGetPositionString(hwnd As HWND, lp As BytePtr, len As DWord) As Long
	MCIWndGetPosition = SendMessage(hwnd, MCIWNDM_GETPOSITION, len, lp)
End Function

Function MCIWndGetStart(hwnd As HWND) As Long
	MCIWndGetStart = SendMessage(hwnd, MCIWNDM_GETSTART, 0, 0)
End Function

Function MCIWndGetLength(hwnd As HWND) As Long
	MCIWndGetLength = SendMessage(hwnd, MCIWNDM_GETLENGTH, 0, 0)
End Function

Function MCIWndGetEnd(hwnd As HWND) As Long
	MCIWndGetEnd = SendMessage(hwnd, MCIWNDM_GETEND, 0, 0)
End Function

Function MCIWndStep(hwnd As HWND, n As Long) As Long
	MCIWndStep = SendMessage(hwnd, MCI_STEP, 0,n)
End Function

Sub MCIWndDestroy(hwnd As HWND)
	SendMessage(hwnd, WM_CLOSE, 0, 0)
End Sub

Sub MCIWndSetZoom(hwnd As HWND,iZoom)
	SendMessage(hwnd, MCIWNDM_SETZOOM, 0, (UINT)(iZoom))
End Sub

Function MCIWndGetZoom(hwnd As HWND) As DWord
	MCIWndGetZoom = SendMessage(hwnd, MCIWNDM_GETZOOM, 0, 0)
End Function

Function MCIWndSetVolume(hwnd As HWND,iVol As Long) As Long
	MCIWndSetVolume = SendMessage(hwnd, MCIWNDM_SETVOLUME, 0, iVol)
End Function

Function MCIWndGetVolume(hwnd As HWND) As Long
	MCIWndGetVolume = SendMessage(hwnd, MCIWNDM_GETVOLUME, 0, 0)
End Function

Function MCIWndSetSpeed(hwnd As HWND,iSpeed As Long) As Long
	MCIWndSetSpeed = SendMessage(hwnd, MCIWNDM_SETSPEED, 0, iSpeed)
End Function

Function MCIWndGetSpeed(hwnd As HWND) As Long
	MCIWndGetSpeed = SendMessage(hwnd, MCIWNDM_GETSPEED, 0, 0)
End Function

Function MCIWndSetTimeFormat(hwnd As HWND, lp As BytePtr) As Long
	MCIWndSetTimeFormat = SendMessage(hwnd, MCIWNDM_SETTIMEFORMAT, 0, lp)
End Function

Function MCIWndGetTimeFormat(hwnd As HWND, lp As VoidPtr, len As DWord) As Long
	MCIWndGetTimeFormat = SendMessage(hwnd, MCIWNDM_GETTIMEFORMAT, len, lp)
End Function

Sub MCIWndValidateMedia(hwnd As HWND)
	SendMessage(hwnd, MCIWNDM_VALIDATEMEDIA, 0, 0)
End Sub

Sub MCIWndSetRepeat(hwnd As HWND, f As Long)
	SendMessage(hwnd, MCIWNDM_SETREPEAT, 0, f)
End Sub

Function MCIWndGetRepeat(hwnd As HWND) As Long
	MCIWndGetRepeat = SendMessage(hwnd, MCIWNDM_GETREPEAT, 0, 0)
End Function

Function MCIWndUseFrames(hwnd As HWND) As Long
	MCIWndSetTimeFormat(hwnd, "frames")
End Function

Function MCIWndUseTime(hwnd As HWND) As Long
	MCIWndSetTimeFormat(hwnd, "ms")
End Function

Sub MCIWndSetActiveTimer(hwnd As HWND, active As DWord)
	SendMessage(hwnd, MCIWNDM_SETACTIVETIMER, active, 0)
End Sub

Sub MCIWndSetInactiveTimer(hwnd As HWND, inactive As DWord)
	SendMessage(hwnd, MCIWNDM_SETINACTIVETIMER, inactive, 0)
End Sub

Sub MCIWndSetTimers(hwnd As HWND, active As DWord, inactive As DWord)
	SendMessage(hwnd, MCIWNDM_SETTIMERS,active, inactive)
End Sub

Function MCIWndGetActiveTimer(hwnd As HWND) As DWord
	MCIWndGetActiveTimer = SendMessage(hwnd, MCIWNDM_GETACTIVETIMER, 0, 0)
End Function

Function MCIWndGetInactiveTimer(hwnd As HWND) As DWord
	MCIWndGetInactiveTimer = SendMessage(hwnd, MCIWNDM_GETINACTIVETIMER, 0, 0)
End Function

Function MCIWndRealize(hwnd As HWND, fBkgnd As Long) As Long
	MCIWndRealize = SendMessage(hwnd, MCIWNDM_REALIZE,fBkgnd,0)
End Function

Function MCIWndSendString(hwnd As HWND, sz As BytePtr) As Long
	MCIWndSendString = SendMessage(hwnd, MCIWNDM_SENDSTRING, 0, sz)
End Function

Function MCIWndReturnString(hwnd As HWND, lp As BytePtr, len As DWord) As Long
	MCIWndReturnString = SendMessage(hwnd, MCIWNDM_RETURNSTRING, len, lp)
End Function

Function MCIWndGetError(hwnd As HWND, lp As BytePtr, len As DWord) As Long
	MCIWndGetError = SendMessage(hwnd, MCIWNDM_GETERROR, len, lp)
End Function

Sub MCIWndActivate(hwnd As HWND, f As Long)
	SendMessage(hwnd, WM_ACTIVATE, f, 0)
End Sub

Function MCIWndGetPalette(hwnd As HWND) As /*HPALETTE*/ DWord
	MCIWndGetPalette = SendMessage(hwnd, MCIWNDM_GETPALETTE, 0, 0)
End Function

Function MCIWndSetPalette(hwnd As HWND, hpal As /*HPALETTE*/ DWord) As Long
	MCIWndSetPalette = SendMessage(hwnd, MCIWNDM_SETPALETTE, hpal, 0)
End Function

Function MCIWndGetFileName(hwnd As HWND, lp As BytePtr, len As DWord) As Long
	MCIWndGetFileName = SendMessage(hwnd, MCIWNDM_GETFILENAME, len, lp)
End Function

Function MCIWndGetDevice(hwnd As HWND, lp As VoidPtr, len As DWord) As Long
	MCIWndGetDevice = SendMessage(hwnd, MCIWNDM_GETDEVICE, len, lp)
End Function

Function MCIWndGetStyles(hwnd As HWND) As DWord
	MCIWndGetStyles = SendMessage(hwnd, MCIWNDM_GETSTYLES, 0, 0L)
End Function

Function MCIWndChangeStyles(hwnd As HWND, mask As DWord, value As Long) As Long
	MCIWndChangeStyles = SendMessage(hwnd, MCIWNDM_CHANGESTYLES, mask, value)
End Function

Function MCIWndOpenInterface(hwnd As HWND, pUnk As VoidPtr) As Long
	MCIWndOpenInterface = SendMessage(hwnd, MCIWNDM_OPENINTERFACE, 0, pUnk)
End Function

Function MCIWndSetOwner(hwnd As HWND, hwndP As HWND) As Long
	MCIWndSetOwner = SendMessage(hwnd, MCIWNDM_SETOWNER, hwndP, 0)
End Function

'Messages an app will send to MCIWND
Const MCIWNDM_GETDEVICEID = (WM_USER + 100)
Const MCIWNDM_GETSTART = (WM_USER + 103)
Const MCIWNDM_GETLENGTH	= (WM_USER + 104)
Const MCIWNDM_GETEND = (WM_USER + 105)
Const MCIWNDM_EJECT = (WM_USER + 107)
Const MCIWNDM_SETZOOM = (WM_USER + 108)
Const MCIWNDM_GETZOOM = (WM_USER + 109)
Const MCIWNDM_SETVOLUME	= (WM_USER + 110)
Const MCIWNDM_GETVOLUME	= (WM_USER + 111)
Const MCIWNDM_SETSPEED = (WM_USER + 112)
Const MCIWNDM_GETSPEED = (WM_USER + 113)
Const MCIWNDM_SETREPEAT	= (WM_USER + 114)
Const MCIWNDM_GETREPEAT	= (WM_USER + 115)
Const MCIWNDM_REALIZE = (WM_USER + 118)
Const MCIWNDM_VALIDATEMEDIA = (WM_USER + 121)
Const MCIWNDM_PLAYFROM = (WM_USER + 122)
Const MCIWNDM_PLAYTO = (WM_USER + 123)
Const MCIWNDM_GETPALETTE = (WM_USER + 126)
Const MCIWNDM_SETPALETTE = (WM_USER + 127)
Const MCIWNDM_SETTIMERS	= (WM_USER + 129)
Const MCIWNDM_SETACTIVETIMER = (WM_USER + 130)
Const MCIWNDM_SETINACTIVETIMER = (WM_USER + 131)
Const MCIWNDM_GETACTIVETIMER = (WM_USER + 132)
Const MCIWNDM_GETINACTIVETIMER = (WM_USER + 133)
Const MCIWNDM_CHANGESTYLES = (WM_USER + 135)
Const MCIWNDM_GETSTYLES	= (WM_USER + 136)
Const MCIWNDM_GETALIAS = (WM_USER + 137)
Const MCIWNDM_PLAYREVERSE = (WM_USER + 139)
Const MCIWNDM_GET_SOURCE = (WM_USER + 140)
Const MCIWNDM_PUT_SOURCE = (WM_USER + 141)
Const MCIWNDM_GET_DEST = (WM_USER + 142)
Const MCIWNDM_PUT_DEST = (WM_USER + 143)
Const MCIWNDM_CAN_PLAY = (WM_USER + 144)
Const MCIWNDM_CAN_WINDOW = (WM_USER + 145)
Const MCIWNDM_CAN_RECORD = (WM_USER + 146)
Const MCIWNDM_CAN_SAVE = (WM_USER + 147)
Const MCIWNDM_CAN_EJECT = (WM_USER + 148)
Const MCIWNDM_CAN_CONFIG = (WM_USER + 149)
Const MCIWNDM_PALETTEKICK = (WM_USER + 150)
Const MCIWNDM_OPENINTERFACE	= (WM_USER + 151)
Const MCIWNDM_SETOWNER	= (WM_USER + 152)

Const MCIWNDM_SENDSTRING = (WM_USER + 101)
Const MCIWNDM_GETPOSITION = (WM_USER + 102)
Const MCIWNDM_GETMODE = (WM_USER + 106)
Const MCIWNDM_SETTIMEFORMAT = (WM_USER + 119)
Const MCIWNDM_GETTIMEFORMAT = (WM_USER + 120)
Const MCIWNDM_GETFILENAME = (WM_USER + 124)
Const MCIWNDM_GETDEVICE = (WM_USER + 125)
Const MCIWNDM_GETERROR = (WM_USER + 128)
Const MCIWNDM_NEW = (WM_USER + 134)
Const MCIWNDM_RETURNSTRING	= (WM_USER + 138)
Const MCIWNDM_OPEN = (WM_USER + 153)

Const MCIWNDM_SENDSTRINGW = (WM_USER + 201)
Const MCIWNDM_GETPOSITIONW	= (WM_USER + 202)
Const MCIWNDM_GETMODEW = (WM_USER + 206)
Const MCIWNDM_SETTIMEFORMATW = (WM_USER + 219)
Const MCIWNDM_GETTIMEFORMATW = (WM_USER + 220)
Const MCIWNDM_GETFILENAMEW = (WM_USER + 224)
Const MCIWNDM_GETDEVICEW = (WM_USER + 225)
Const MCIWNDM_GETERRORW = (WM_USER + 228)
Const MCIWNDM_NEWW = (WM_USER + 234)
Const MCIWNDM_RETURNSTRINGW	= (WM_USER + 238)
Const MCIWNDM_OPENW = (WM_USER + 252)

'Messages MCIWND will send to an app
Const MCIWNDM_NOTIFYMODE = (WM_USER + 200) 'wp = hwnd, lp = mode
Const MCIWNDM_NOTIFYPOS	= (WM_USER + 201) 'wp = hwnd, lp = pos
Const MCIWNDM_NOTIFYSIZE = (WM_USER + 202) 'wp = hwnd
Const MCIWNDM_NOTIFYMEDIA = (WM_USER + 203) 'wp = hwnd, lp = fn
Const MCIWNDM_NOTIFYERROR = (WM_USER + 205) 'wp = hwnd, lp = error

'special seek values for START and END
Const MCIWND_START = -1
Const MCIWND_END = -2

/*
'win32 apps send MCIWNDM_OPEN
Const MCI_OPEN = &H0803
Const MCI_CLOSE = &H0804
Const MCI_PLAY = &H0806
Const MCI_SEEK = &H0807
Const MCI_STOP = &H0808
Const MCI_PAUSE = &H0809
Const MCI_STEP = &H080E
Const MCI_RECORD = &H080F
Const MCI_SAVE = &H0813
Const MCI_CUT = &H0851
Const MCI_COPY = &H0852
Const MCI_PASTE = &H0853
Const MCI_RESUME = &H0855
Const MCI_DELETE = &H0856
*/

/*
'return values for 'status mode' command
Const MCI_MODE_NOT_READY = (524)
Const MCI_MODE_STOP = (525)
Const MCI_MODE_PLAY = (526)
Const MCI_MODE_RECORD = (527)
Const MCI_MODE_SEEK = (528)
Const MCI_MODE_PAUSE = (529)
Const MCI_MODE_OPEN = (530)
*/



メニューにIDM_STOP、IDM_PLAYを追加してください。

コード: 全て選択

Dim FileName As *Byte
FileName="C:\WINDOWS\Media\tada.wav" 'サンプルではWAVファイルですがメディアファイルであれば音声だろうが画像だろうが再生できます。

'-----------------------------------------------------------------------------
' ウィンドウメッセージを処理するためのコールバック関数
Dim hMCIWnd=NULL As HWND
Function MainWndProc(hWnd As DWord, dwMsg As DWord, wParam As DWord, lParam As DWord) As DWord
	' TODO: この位置にウィンドウメッセージを処理するためのコードを記述します。
	Select Case dwMsg
		Case WM_DESTROY
			MCIWndClose(hMCIWnd)
			MCIWndDestroy(hMCIWnd)
		Case WM_CREATE
			MCIWndRegisterClass()
			hMCIWnd = MCIWndCreate(hWnd ,GetModuleHandle(NULL),WS_CHILD or WS_VISIBLE or WS_BORDER or MCIWNDF_NOPLAYBAR,NULL)
			MCIWndOpen(hMCIWnd,FileName,0)
		Case WM_SIZE
			MoveWindow(hMCIWnd , 0 , 0 , LOWORD(lParam) , HIWORD(lParam) , FALSE)
	End Select
	' イベントプロシージャの呼び出しを行います。
	MainWndProc=EventCall_MainWnd(hWnd,dwMsg,wParam,lParam)
End Function


'-----------------------------------------------------------------------------
' ここから下は、イベントプロシージャを記述するための領域になります。

Sub MainWnd_Destroy()
	MCIWND_DestroyObjects()
	PostQuitMessage(0)
End Sub

Sub MainWnd_IDM_STOP_MenuClick()
	MCIWndStop(hMCIWnd)
End Sub

Sub MainWnd_IDM_PLAY_MenuClick()
	MCIWndPlayFrom(hMCIWnd,0)
End Sub
提灯鮟鱇

Re:MCIウィンドウで動画プレイヤーを作りたい

#5 投稿記事 by 提灯鮟鱇 »

NoWestさん返信ありがとうございます。

そもそも私の定義間違えてたんですね。量も多いし、私には一生かかっても出来ない気が。でも、ほとんどがWM_USERを送ってるんですね。

教えて頂いたサンプルで動画プレイヤーが出来ましたが、画像は見れなかったのと、MCIWND_DestroyObjects()ではコンパイル出来なかったのでMCIWndDestroy(hMCIWnd)に変えました。

activebasicはサンプルが少ないので、それなりの物が出来たら、私の様な新規参入者のためにコードをここに書きたいと思います。でも、問題山積。MCIウインドウについてくるツールバーの使い方とか、メインウインドウとMCIウインドウでドロップの時の動作が違う事や、動画停止中にウインドウ動かすと中身は動かない事とか。先は長そう。MCI関連って検索しても少ない。あんまり使う人っていないんですかね。もう少し自分で調べて、どうしても分からなかったらまた聞きます。

詳しい方達はどうやって勉強してるんですかね。やっぱり専門の学校に通ってるのでしょうか。良い本があれば教えて欲しいです。
Sinryow
記事: 141
登録日時: 2005年5月31日(火) 09:34
お住まい: 北海道
連絡する:

Re:MCIウィンドウで動画プレイヤーを作りたい

#6 投稿記事 by Sinryow »

> 詳しい方達はどうやって勉強してるんですかね。やっぱり専門の学校に通ってるのでしょうか。良い本があれば教えて欲しいです。

一般的な話になりますが,C言語の知識があれば結構勉強は楽になると思います。
というのも,サンプルの数(特にインターネット上に流れているもの)はC言語によるものが圧倒的に多いですから。
基本的な文法とかだけ押さえておく程度でも結構役に立つと思います。
' ============================================================
' Sinryow Game Home Page - http://www.sinryow.net/
' Sinryow ActiveBasic Center - http://ab.sinryow.net/
' ============================================================
西野孝雄

今更なのですが

#7 投稿記事 by 西野孝雄 »

これまた凄く今更なのですが
それなりの物が出来たら、私の様な新規参入者のためにコードをここに書きたいと思います。
と書いておいてずっとほったらかしなのも無責任だと思うので書かせて頂きます。
提灯鮟鱇=西野孝雄です。まだ名前を決めかねていた頃だと思いますがもう覚えていない。

で、肝心のコードは以下にあります。EasyMediaPlayerという所です。
NoWestさんの投稿の丸パクリで結構適当な感じですが。
以下を投稿したのも結構前ですが書かせて頂きました。
失礼しました。

http://www.2chab.net/pukiwiki/index.php ... 0%D1%BD%EA
返信する