〜 メディア 〜
ムービーの表示位置・サイズを指定

HSPウィンドウ内でムービーを再生する時、表示サイズがウィンドウよりも大きいと欠けてしまいますが、
MCIを使用するとムービー毎の位置・サイズを変更することができます。
設定とは逆に、現在の再生位置・サイズを取得するやり方についてはコチラをご覧ください。
尚、同時再生しないので、モジュール命令のパラメータ「バッファ番号」は不要なのですが、
複数読込に対応しているコチラの共通のMCIモジュールを使用しているために当サンプルでも定義してます。
また、ムービーの表示サイズをHSP内に取り込むためにコチラのモジュールも利用しています。
	

mciload ファイルパス, 番号
ファイルパス再生するファイルパスを指定する。
尚、"1"ならA、"2"ならB、"26"ならZドライブとしたCDオーディオ形式でロードする。
番号割り当てるバッファ番号を指定する。
尚、当命令を実行すると、自動的に指定番号が操作対象バッファとなる。

mciplay 開始位置, 終了位置, 繰り返し
開始位置省略可能(省略時は空文字""を指定すること)。再生開始位置を指定する。
尚、指定は数値文字列、現在のフォーマット(初期はMSF"mm:ss:ff")で行う。
終了位置省略可能(省略時は空文字""を指定すること)。再生終了位置を指定する。
尚、指定は数値文字列、現在のフォーマット(初期はMSF"mm:ss:ff")で行う。
繰り返し最後まで再生したら自動的に初めから再生する(=1)か否(=0)かを指定する。

mciexit
[パラメータなし]全デバイスを解放するだけの為、パラメータは必要ない。
尚、終了時に自動的に呼び出されるので命令を実行する必要はない。

mciwinset ウィンドウID
ウィンドウID再生するHSPウィンドウのウィンドウIDを指定する。

mcisetrect X座標, Y座標, 横幅, 高さ
X座標表示する変更後のX基点座標を指定する。
Y座標表示する変更後のY基点座標を指定する。
横幅表示する変更後の横幅を指定する。
高さ表示する変更後の高さを指定する。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
#module
#deffunc mciload str, int
	mref file, 32 : mref no, 1
	cntno = no
	mci "close _" + cntno
	strmid i, file, , 2 : int i
	if i {
		file = "cdaudio!?"
		poke file, 8, i + 64
	}
	mci "open \"" + file + "\" alias _" + cntno
	return

#deffunc mciplay str, str, int
	mref start, 32 : mref finish, 33 : mref re, 2
	if start ! "" : s = " from " + start : else : s = ""
	if finish ! "" : s += " to " + finish
	if re : s += " repeat"
	mci "play _" + cntno + s
	return

#deffunc mciend onexit
	mci "stop all"
	mci "close all"
	return

#deffunc mciwinset int
	mref id, 0
	mref bmscr, 96 + id
	mci "window _" + cntno + " handle " + bmscr.13
	return

#deffunc mcisetrect int, int, int, int
	mref x, 0 : mref y, 1 : mref w, 2 : mref h, 3
	mci "put _" + cntno + " destination at " + x + " " + y + " " + w + " " + h
	return
#global

	x = 640, 400, 320, 200
	y = 480, 300, 240, 150
	repeat 4
		if cnt : msg += "\n" : else : msg = ""
		msg += "" + x.cnt + " * " + y.cnt
	loop
	dialog "", 16
	if stat = 0 : end
	screen 0, x, y + 25
	objsize 100, 25
	pos   0, 0 : combox size, 100, msg
	pos 100, 0 : button "変更", *change
	mciload refstr
	mciwinset
	mciplay "", ""

*change
	mcisetrect 0, 25, x.size, y.size
	stop

mciload ファイルパス, 番号
ファイルパス再生するファイルパスを指定する。
尚、"1"ならA、"2"ならB、"26"ならZドライブとしたCDオーディオ形式でロードする。
番号割り当てるバッファ番号を指定する。
尚、当命令を実行すると、自動的に指定番号が操作対象バッファとなる。

mciplay 開始位置, 終了位置, 繰り返し
開始位置省略可能(省略時は空文字""を指定すること)。再生開始位置を指定する。
尚、指定は数値文字列、現在のフォーマット(初期はMSF"mm:ss:ff")で行う。
終了位置省略可能(省略時は空文字""を指定すること)。再生終了位置を指定する。
尚、指定は数値文字列、現在のフォーマット(初期はMSF"mm:ss:ff")で行う。
繰り返し最後まで再生したら自動的に初めから再生する(=1)か否(=0)かを指定する。

mciexit
[パラメータなし]全デバイスを解放するだけの為、パラメータは必要ない。
尚、終了時に自動的に呼び出されるので命令を実行する必要はない。

mciwinset ウィンドウID
ウィンドウID再生するHSPウィンドウのウィンドウIDを指定する。

mcisetrect X座標, Y座標, 横幅, 高さ
X座標表示する変更後のX基点座標を指定する。
Y座標表示する変更後のY基点座標を指定する。
横幅表示する変更後の横幅を指定する。
高さ表示する変更後の高さを指定する。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
#module
#deffunc mciload str file, int no, local s
	cntno = no
	mci "close _" + cntno
	if int(file) {
		s = "cdaudio!?"
		poke s, 8, int(file) + 64
	} else {
		s = file
	}
	mci "open \"" + s + "\" alias _" + cntno
	return

#deffunc mciplay str start, str finish, int re, local s
	if start ! "" : s = " from " + start : else : s = ""
	if finish ! "" : s += " to " + finish
	if re : s += " repeat"
	mci "play _" + cntno + s
	return

#deffunc mciend onexit
	mci "stop all"
	mci "close all"
	return

#deffunc mciwinset int id
	mref bmscr, 96 + id
	mci "window _" + cntno + " handle " + bmscr.13

#deffunc mcisetrect int x, int y, int w, int h
	mci "put _" + cntno + " destination at " + x + " " + y + " " + w + " " + h
	return
#global

	x = 640, 400, 320, 200
	y = 480, 300, 240, 150
	foreach x
		if cnt : msg += "\n" : else : msg = ""
		msg += str(x.cnt) + " * " + y.cnt
	loop
	dialog "", 16
	if stat = 0 : end
	screen 0, x, y + 25
	objsize 100, 25
	pos   0, 0 : combox size, 100, msg
	pos 100, 0 : button gosub "変更", *change
	mciload refstr
	mciwinset
	gosub *change
	mciplay "", ""
	stop

*change
	mcisetrect 0, 25, x.size, y.size
	return