-
(1)
首先
,
p>
要在
USES
里加上
Mmsystem
函数声明如下
:
functionmciSendStringA(lpstrCommand,lpstrReturnSt
ring:PAnsiChar;
uReturnLengt
h:UINT;hWndCallback;HWND);MCIERROR;stdcall;
functionmciSendStringW(lpstrCommand,lpstrRetu
rnString:PWideChar;
uReturnL
ength:UINT;hWndCallback:HWND);MCIERROR;stdcall;
p>
functionmciSendString(lpstrCommand,lpstrR
eturnString:Pchar;
uReturnLength:UINT;h
WndCallback:HWND);MCIERROR;stdcall;
具体请参考帮助
MCI
命令消息接口函数
:
mciSendCommand
发送命令消息函数
mciGetDeviceID
返回打开设备的
ID
mciGetErrorString
返回
mciSendCommand
错误代码对应的字符串
向
MCI
设备发送命
令消息时使用
mciSendCommand(mciID:
MCIDEVICEID;uMessage:UINT;dwParam1,dwParam2:DWORD)
;MCIERR
OR;stdcall;
mciID:
接受命令消息的
MCI
设备的
ID
uMessage:
命令消息
dwParam1:
命令消息标志
<
/p>
dwParam2:
指向接收命令消息参数块地址
MCIERROR:
返回值
,
如果为
0,
表示调用成功
,
否则失败
.
获得错误代
码后通过
function mciGetErrorStr
ing(mcierr:MCIERROR;pszT
ext;Pchar;uLeng
th:UINT):BOOL;stdcall;
来获得相应的错误字符串
.
该函数参数说明如下
:
mcierr:
由
mciSendCommand
返回的错误代码
pszText:
存放与
mcierr
相对应的字符串的地址
uLength:
指定
pszText
指向的缓冲区大小
,MCI
< br>返回的字符串长度最大为
128
个字符
< br>
BOOL:
返回值
,
为
true
则成功
,<
/p>
否则
,
就没有此错误代码
下面这个函数
,
是获取
p>
MCI
设备
ID
的
functionmciGetDeviceID(pszD
evice:Pchar):MCIDEVICEID;stdcall;
pszDe
vice:
指定已经打开的
MCI
设备
名称
MCIDEVICEID:
返回
值
,
为返回的
ID.
关于设备名称
,
请打开
文件在
[mci]
段
例如
:
cdaudio=
sequencer=
waveaudio=
avivideo=
videodisc=
vcr=
MPEGVideo=
c
daudio
和
sequencer
等
就是设备名
MCI
详解
[
连载二
]
什么是
MCI,MCI
是多媒体控制接口
(Media Control
Interface)
的缩写
.
它包
括基于命令字符串
,
消息方式与设备驱动程序进行通讯的可扩充
接口
和
MCI
设备驱动程序
.
支持
MCI
指令的设备有
ANIMATION(
动画播放设备
)
CDAUDIO(CD
音频设备
)
WAVEAUDIO(
波形音频设备
)
OVERPLAY(
视频叠加设备
,<
/p>
如
Video Blaster)
DI
GITALVIDEO(
窗体数字视频
,
如回放
*.avi
文件
)
VIDEODISC(
激光视频设备
)
VCR(
可程控录像机
)
SEQUENCER(MIDI
序列发生器
) <
/p>
打开
WINDOWS
子目录下的
文件
,
在
[MCI]
段就能看到以上设备的
安装信息
,
格式为
:
DeviceType = Driver
设备名
=
驱动程序名
打开
文件
,
打开
[mci extensions],
找到如下段
[mci extensions]
mid=Sequencer
rmi=Sequencer
wav=waveaudio
avi=AVIVideo
cda=CDAudio
aif=MPEGVideo
aiff=MPEGVideo
aifc=MPEGVideo
au=MPEGVideo
m1v=MPEGVideo
mov=MPEGVideo
mp2=MPEGVideo
mpa=MPEGVideo
mpe=MPEGVideo
mpeg=MPEGVideo
mpg=MPEGVideo
qt=MPEGVideo
snd=MPEGVideo
dat=MPEGVideo
其格式为
:
文件扩展名
=
设备名
在程序设计中
,
指定一个
mci
设备
,
就是指定设备名
,
当然
,
还可以指定相对应的
设备类型常数
:
MCI
设备与设备类型常数
设备类型设备类型常数
cdaudio MCI_DEVTYPE_ANIMATION
animation MCI_DEVTYPE_CD_AUDIO
dat MCI_DEVTYPE_DAT
digitalvideo MCI_DEVTYPE_DIGITAL_VIDEO
other MCI_DEVTYPE_OTHER
overlay MCI_DEVTYPE_OVERLAY
scanner MCI_DEVTYPE_SCANNER
sequencer MCI_DEVTYPE_SEQUENCER
vcr MCI_DEVTYPE_VCR
videodisc MCI_DEVTYPE_VIDEODISC
waveaudio MCI_DEVTYPE_WAVEFORM_AUDIO
p>
MCI
设备还有简单型
(Simple)<
/p>
和复合型
(Compound)
之分
p>
,MCI
将不需要文件的设备
称作简单型设备
(Simple Device),
如
CDAudio
等
,<
/p>
将需要文件的设备称作复合型
设备
(Compound Device),
< br>如
Sequencer,Waveaudio
等
.
MCI
详解
[
连载三
p>
]
在连载一里
,
我解释了几个
MCI
的函数
(
请参考连载一
)
W
INDOWS
中的多媒体扩展部分的消息由两类
:
一是发送到窗体
,
有窗体函数处理的消息
均以
MM
开头
.
二是用于回调函数和基于消息的
API
消息
,
由应用程序发送
,
实现与
MCI
设备
的通讯
.
DELPHI<
/p>
中有
32
种命令消息
,
按用途分为
:
1,
系统命令消息
:
由
MCI
直接解释
,
不依耐设备性能
.
2,
必须命令消息
:
所有
MCI
设备都支持
,
用于打开
,
关闭设备并获得
有关信息
.
3,
基本命令消息
:
所有的
MCI
设备
都支持
,
但并非完全支持
,
遇到不支持的某一个消息时
,
返回
MCIERR_UNSUPPORTED_FUNCTION.
4,
扩展命令消息
,
用于特定设备
.
扩展命令消息分三种
:
(1)
使用
MCI
元素文件扩展命令消
息
(FAQ
A:
何谓元素
?
< br>Q:
复合型设备在打开时既要指定设备名
,
又要指定文件名
,
而文件名就被称为元素
.
A:
何谓复合型设备
?
Q:
参考连载二
)
(2)
设备操作与定位扩展命令消息
(3)
窗口式视频设备扩展命令消息
此外
,MCI
还使用
< br>MCI_MCINOTIFY
告诉应用程序一条
MCI<
/p>
消息已经发送
,
它是窗口通知消息
,
要得到此消息
,
应用程序要指定一个窗体处理该消息
.
消息分类
:
系统命令消息
MCI_BREAK
设置指定设备的中止键
MCI_SOUND
播放
WINDO
WS
声音
MCI_SYSINFO
获取信息
必须命令消息
MCI_CLOSE
关闭设备
MCI_GETDEVCAPS
获取设备性能信息
MCI_INFO
获得设备信息
MCI_OPEN
打开设备并获得
ID
MCI_STATUS
获得状态信息
基本命令消息
MCI_LOAD
载入文件
MCI_PAUSE
暂停设备
MCI_PLAY
播放
MCI_RECORD
录制
MCI_RESUME
恢复暂停
MCI_SAVE
保存文件
MCI_SEEK
在元素内定位
MCI_SET
设置设备参数
MCI_STOP
停止
扩展命令消息
[
使用元素文件扩展命令消息
]
MCI_COPY
拷贝数据
MCI_CUT
剪切
MCI_DELETE
删除
MCI_PASTE
粘贴
[
设备操作与定位扩展命令消息
]
MCI_CUE
为播放或录制操作插入一个设备
MCI_ESCAPE
把一串命令发送到命令处理器
MCI_SPIN
开始或中止旋转可转动设备
MCI_STEP
步进帧
[
窗口式视频设备扩展命令消息
]
MCI_FREEZE
冻结画面
MCI_PUT
定义源或目的裁剪矩形区
MCI_REALIZE
实现图形设备的调色板
MCI_UNFREEZE
与
FRE
EZE
相反
MCI_UPDATE
刷新
MCI_WHERE
确定剪裁区域
MCI_WINDOW
为一个图形设备及它的显示方式指定一个窗口和窗口风格
MCI
连载四
发送
MCI
命令消息有的需要花很长时间才能完成
,
如播放
AVI
文件
p>
,
是否在播放完成前
就将控制权返回到
APPLICATION,
是由命令消息
标志确定的
.
命令消息标志分专用标志
和通用标志
,
专用消息与命令消息配套
使用
,
通用消息适用于所有命令消息
:
MCI_NOTIFY
和
MCI_WA
IT
MCI_NOTIFY:
通知标志
,
表示规定动作完成后
,
给随同发送
命令消息的数据结构
dwCallBack
字段指定的窗口发
送
MM_MCINOTIFY
消息
,<
/p>
这个消息由
dwCallBack
字段指
定的回调函数处理
]