当前位置:首页 » 台词配音 » mci播放视频

mci播放视频

发布时间: 2021-03-15 10:03:18

❶ 本人目前在用MCI制作视频播放器,想获得视频文件的尺寸,但不知道用什么接口函数获得,求大神解答……

抱歉!!说的不够明白,请补充详细!

❷ 无法用MCI命令播放此视频文件。MCI报告:指定的参数超出指定命令范围

多媒体 MCI 应用
媒体控制接口( Media Control Interface , MCI )在控制音频、视频等设备方面,提供了与设备无关的控制方法。所谓与“设备无关”是指 Windows 提供了开放的接口标准,用户或开发人员只需将多媒体设备生产厂商提供的驱动程序加入到 Windows 中,就可以加以利用,而不必考虑该设备的硬件信息。
每个 MCI 设备都由相应的驱动程序来管理,用户或应用软件开发人员只需向 MCI 发送简单的命令字符或代码就可以控制相关的设备。除一些标准设备外,多媒体设备的 MCI 驱动程序通常由该设备的生产厂家随产品一起提供, Microsoft 公司为这些厂家提供编写设备驱动程序的规范,以保证其能在 Windows 下正常工作。
Windows 应用程序通过设备的类型来区分设备,目前已定义的 MCI 设备类型如表 7.2 所示。
表 7.2MCI 所支持的常用的多媒体设备 设备类型
设备描述
类型

Animation
动画设备
复合型

Cdaudio
CD-Audio
简单型

Dat
数字音频磁带机

Digitalvideo
在某个窗口的数字视频

Other
未定义的 MCI 设备

Overlay
重叠设备(某个窗口的模拟视频)

Scanner
图像扫描仪

Sequencer
MIDI 音序器(文件扩展名为 .mid )
复合型

Videodisc
激光视盘播放器

Waveaudio
数字波形音频(文件扩展名为 .wav )

MCI的设备类型有两种 ,一是 简单设备,如 CD 、视盘演播器;二是复合设备(需要文件的设备,如数字视频及波形音频设备等。
如果需要通过 MCI 去控制设备,必须将相应的 MCI 驱动程序和设备的驱动程序(扩展名是 DRV )、 DLL 装入。 Windows 中的控制面板可完成 MCI 驱动程序的安装。在 Windows 中, WIN.INI 文件中的 [mci] 部分包括一个已安装了的设备类型表,如下所示。
[mci extensions]
wav=waveaudio
mid=Sequencer
rmi=Sequencer
avi=AVIVideo
m1v=MpegVideo
mpe=MpegVideo
dat=MpegVideo1
Windows 采用两种 MCI 接口与 MCI 设备通信。一是 命令消息接口函数,直接控制 MCI 设备;二是使用命令字符串接口函数,基于文本接口命令或命令脚本来控制 MCI 设备。
MCI 的命令消息接口传送方式
命令消息的函数及命令消息
Windows 多媒体扩充软件为使用命令消息接口发送 MCI 命令提供 3 个函数:
MciSendCommand 发送一个命令消息到一个 MCI 设备;
MciGetDeviceID 当打开一个设备时,返回设备的 ID 号;
MciGetErrorString 返回对应一个错误代码的字符串。
以 MciSendCommand 为例说明。利用消息和数据结构来给多媒体发送命令并接收设备传来的信息,用函数 MCISendCommand ,格式为:
DWORD MciSendCommand(WORD Device,Word Message,DWORD Param1,DWORD Param2)
其中 :DeviceID 标识一个 MCI 设备 ;
Message 标识要发出的消息 , 又称为命令消息如表 7 所示 .
Param1 为消息指定标记 ;
Param2 为指定一个指向消息数据结构的指针
MciSendCommand 调用成功返回 0, 否则返回一个错误代码 , 将错误代码发送到 MciGetErrorString 可获得对这个错误的文本描述 .
表 7.3MCI 的命令消息功能及分类表

命令消息名
功能
使用方式

MCI_SYSINFO
返回有关 MCI 设备的消息
直接由 MCI 解释的命令消息

MCI_BREAK
为一个指定的 MCI 设备设置一个中止键

MCI_SOUND
播放 WIN.INI 文件中的 [Sounds] 部分指定的系统声音

MCI_CLOSE
关闭一个 MCI 设备
所有的 MCI 设备支持的命令消息

MCI_GETDEVICE
获得一个 MCI 设备的性能

MCI_INFO
从一个 MCI 设备中得到有关的信息

MCI_OPEN
初始化一个 MCI 设备

MCI_STUTUS
从一个 MCI 设备返回有关的状态信息

MCI_LOAD
从一个磁盘文件加载数据
基本命令消息

MCI_PAUSE
暂停播放或记录

MCI_PLAY
开始传送输出数据

MCI_RECORD
开始传送输入数据

MCI_RESUME
重新开始播放或记录

MCI_SAVE
将数据存储到磁盘文件中

MCI_SEEK
向前或向后检索

MCI_SET
设置设备信息

MCI_STATUS
从一个 MCI 设备返回有关的状态信息

MCI_STOP
停止播放或记录

MCI 指令概述
MCI 指令可分为四类:系统指令( System Commands )、需求指令( Required Commands )、基本指令( Basic Commands )及扩展指令( Extended Commands ) , 各类的功能见表 7.4 。
表 7.4MCI 指令分类表 指令分类
说明

System
不经过多媒体设备,而由 MCI 本身直接解释并执行。

Required
取得多媒体设备的相关信息或开启、关闭设备命令有 capability 、 info 、 status 、 open 及 close 。

Basic
直接对多媒体设备做存取的动作,如 load 、 pause 、 set 、 status 及 stop 。

Extended
特定设备所具有的命令。

MCI 指令由一字符串组成,语法如下:
Command device_name arguments
其中:
Command 表示所使用的 MCI 指令,如表 7.5 。
表 7.5 MCI 命令表

命令
描述

capacity
请求获取某个设备能力的信息

info
获取某个设备的信息

(如该设备的硬件描述)

close
关闭在使用的设备

open
打开并初始化某个设备

Alias 表示打开声音文件的别名

pause
暂停正在播放和记录的设备

play
开始设备播放

From start_time to end_time

通常以毫秒为单位

record
开始设备记录

resume
恢复暂停设备和记录设备

seek
搜索指定的媒体位置

To position ,to start,to end

set
改变控制设置

status
请求设备状态的信息

stop
停止设备的播放或记录

device_name 表示设备类型、文件名称或别名( Alias )。对于不需要使用文件来播放或记录的多媒体设备,如 CDAudio 设备或激光视盘机, device_name 只要以设备类型表示即可。
对于有些设备,如语音设备或动画播放设备等须用到文件的复合设备,device_name 必须是文件名称才行。必须使用标准的扩展文件名, MCI 会根据扩展文件名自动判别所使用的设备类型。这些标准的扩展文件名,可以在 WIN.INI 中的 [MCI extension] 段中找到 , 至于别名,则是为了简化 MCI 指令字符串及避免使用重复的设备类型或文件名称。例如:打开 canyon.mid 文件并播放, MCI 命令语句
open c:\win\canyon.mid type sequencer
play c:\win\canyon.mid
可以简化为:
open c:\win\canyon.mid type sequencer alias MIDI
play MIDI
arguments 表示 MCI 语法中的参数部分,则是使用 MCI 指令时所需要的各种参数。例如使用 play 命令,可能就要用到 from 及 to 这两个参数来表示起始及结束的位置。
例如: play cdaudio from 4 to 6
这行指令表示要演凑 CD 光盘中第四首到第六首曲目。
MCI 指令的使用
打开及关闭 MCI 设备 在使用 MCI 设备之前,必须使用 Open 指令将它启动。至于系统能同时打开多少多媒体设备,完全取决于系统存储器的大小。
Open 指令的语法如下:
Open device_name arguments
在前面已介绍过, device_name 可能是设备名称或文件名称,完全取决于使用的多媒体设备是否需要文件而定。 MCI 将不需要文件的设备称为简单设备,需要文件的设备则为复合设备,这两种设备打开的方式也不同。表 6.4 列出了各种多媒体设备的类别。
注意, Device type 可在 WINDOWS 的 SYSTEM.INI 中 [MCI] 段中找到,通常在安装多媒体设备时,安装程序都会更新 SYSTEM.INI 中 [MCI] 段中,加入新的驱动程序。
[mci]
waveaudio=mciwave.drv
sequencer=mciseq.drv
cdaudio=mcicda.drv
avivideo=mciavi.drv
videodisc=mcipionr.drv
vcr=mcivisca.drv
等号“ = ”的左边表示 DeviceType ,右边表示控制此多媒体设备所需要的驱动程序。
打开简单型 MCI 设备。简单型设备只要在 device_name 的部分表示使用设备的类型就可以了,如: open cdaudio
打开复合型多媒体设备。复合型设备需要表明使用的文件,如:
open c:\cwin\chimes.wav type waveaudio
open c:\cwin\canyon.mid type sequencer
其中 type waveaudio 或 type sequencer 可以省略。因为 MCI 会根据扩展名 wav 及 mid 自动区别其设备名称。
关闭 MCI 设备 当不使用多媒体设备时可以使用 close 指令来关闭打开的设备。请注意,最好不要在程序刚开始执行时就打开设备,并直到程序结束才关闭设备,这样其他应用程序在该程序执行阶段无法使用该设备。
播放多媒体设备 Play 命令是用来播放多媒体设备(或其他使用的文件)的。如果只使用 play 指令,而不加任何参数,则多媒体设备会从目前播放的位置播放到文件结束为止。例如:
playcdaudiofrom3000to15000
表示播放 CD 盘的第 3 秒至 15 秒(以毫秒为单位)
取得 MCI 设备的信息 每种多媒体设备都有支持 capability 、 status 和 info 指令。这些指令是用来取得多媒体设备的各项信息及状态的。例如:
capability cdaudio can eject
这句 MCI 指令是询问使用的光盘驱动器是否有退出 CD 光盘的功能。
Status cdaudio mode
这句 MCI 指令执行后,会传回目前光盘驱动器的状态,是在播放中( playing )还是在暂停( paused ),等等。
Info waveaudio proct
执行这句 MCI 指令后,会传当前使用的 Waveform 语音设备的产品名称。
参数的使用 在多媒体程序设计中为 MCI 指令设置合适的参数是十分重要的。常用的有 shareable 、 all 、 new 、 wait 等。
① 使用 shareable (可共享的)参数。如果在打开多媒体设备时,使用 shareable 参数,就能让不同的应用程序同时使用相同的多媒体设备。例如:
open cdaudio shareable
执行该 MCI 指令将 CD 光盘驱动器设定为共享设备,此时,应用程序无法预期该光盘驱动器的状态,因为它随时都可能被其他应用程序所使用而改变状态。注意不是每种多媒体设备都可设置为共享状态,大部分复合型设备都有无法设置为共享,对于该类设备,可采用以不同的别名多次打开的方法,来实现多个应用程序使用一个设备。
② 使用 ALL 参数。对于某些指令可用 ALL 参数来描述。使用了该参数, MCI 会依次将这个指令传送给每一个已打开的设备。例如:
close all
将关闭所有已打开的设备。
③ 使用 NEW 参数。 MCI 允许建立一个新文件。而不必给予文件名,只要在使用 save 指令存储前,描述指定的文件名即可。例如:
open newtype waveaudio alias sounds
record sounds
save sounds test. wav
close sounds
④ wait 参数。因为 MCI 指令在执行之后会立即将控制权交回,所以有时需要在 MCI 指令后加上参数 wait 。如果输入下面指令:
open e:\win\chimes.wav alias sounds
play sounds
stop sounds
执行的结果是听不到任何声音。因为 MCI 在执行 play 命令后,马上去执行 stop 命令。若将其改写如下,则能听到完整的声音了:
open e:\win\chimes.wav alias sounds
play sounds wait
stop sounds
以上只是介绍了 MCI 指令的一般用法,不同的操作指令及不同的参数,在此不详细说明。
命令字符串接口传送方式
Windows 多媒体扩充软件为使用命令字符串接口传送命令字符串提供了 3 个函数:
MciSendString 向一个 MCI 设备驱动程序发送一个命令字符串。这个函数同时也具有对于回调函数和返回字符串的参数。
语法格式如下:
DWORD Mcisendstring ( ipstrCommand, ipstrReturnString,WORD wReturnLenth,
hCallback);
其中: ipstrCommand 是 MCI 命令的字符串(用双引号);
ipstrReturnString 是存放返回代码的缓冲区地址;
wReturnLenth 是缓冲区长度;
hCallback 是返回函数地址。
MciGetErrorString 返回一个同错误代码相对应的文本描述字符串。若函数调用成功,返回返回 TRUE ,否则返回错误代码。
语法格式如下:
WORD MciGetErrorString ( DWORD Error,LpstrBuffer,WORD length )
其中: Error 是错误代码,是 Mcisendstring 或 Mcisendcommand 函数调用返回值。
LpstrBuffer 指向一个缓冲区指针,用来接收系统返回的文本描述;
Length 指定缓冲区的长度。
MciExecute 向一个 MCI 设备驱动程序程序发送一个命令字符串。
语法格式如下:
BOOL MciExecute ( LpstrCommand )
其中: LpstrCommand 是一个指向以 NULL 结束的控制命令字符串。若函数调用成功,返回 TRUE ,不成功返回 FALSE 。

❸ 为什么ppt插入的视频和音乐都播放不了 说什么 mci 损坏啊 求高手

在你所做PPT的电脑上 你是肯定能播放出来的 要在别的地方播放的话 要把视频音乐一起拷过去 放在统一文件夹里 这样在PPT中就能播放了 MCI ( Media Control Interface ) ,是媒体控制接口 一般的话是不会损坏的 不用担心

❹ 电脑问题!”MCI”是什么的简称和什么意思

MCI(Media Control Interface,媒体控制接口)向Windows程序提供了在高层次上控制媒体设备接口的能力。程序不必关心具体设备,就可以对激光唱机(CD)、视盘机、波形音频设备、视频播放设备和MIDI设备等媒体设备进行控制。对于程序员来说,可以把MCI理解为设备面板上的一排按键,通过选择不同的按键(发送不同的MCI命令)可以让设备完成各种功能,而不必关心设备内部实现。比如,对于play,视盘机和CD机有不同的反应(一个是播放视频,一个播放音频),而对用户来说却只需要按同一按钮。

应用程序通过向MCI发送命令来控制媒体设备。MCI命令接口分命令字符串和命令消息两种,两者具有相同的功能。命令字符串具有使用简单的特点,但是它的执行效率不如命令消息

❺ 本人要用VC的mci不用控件写视频播放器,但是不怎么懂用VC和C++,那么需要学些什么呢可否提供书本和资料

在注册表HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\MCI Extensions中有所有的文件类型,和相对应的播放设备。
MCI播放mp3的例子:

#include<windows.h>
#include<stdio.h>
#include<mmsystem.h>

#pragma comment(lib,"winmm.lib")

void main()
{
char buf[128];
//use mciSendString()
//mciSendString("play e:\\songs\\把根留住.mp3",buf,sizeof(buf),NULL);
//mciSendString("play e:\\songs\\zhj.mp3",buf,sizeof(buf),NULL);
char str[128] = ;
int i = 0;

//use mciSendCommand
MCI_OPEN_PARMS mciOpen;
MCIERROR mciError;
SetWindowText(NULL,"12345");
//mciOpen.lpstrDeviceType = (LPCTSTR)MCI_ALL_DEVICE_ID;
//mciOpen.lpstrDeviceType = "waveaudio"; //只能播放.wav文件
//mciOpen.lpstrDeviceType = "avivideo"; //*.avi
mciOpen.lpstrDeviceType = "mpegvideo";
//mciOpen.lpstrDeviceType = "sequencer";
mciOpen.lpstrElementName = "e:\\songs\\zhj.mp3";
//mciOpen.lpstrElementName = "e:\\movie\\first.avi";
//mciOpen.lpstrElementName = "c:\\winnt\\media\\Windows 登录音.wav";
mciError = mciSendCommand(0,MCI_OPEN,MCI_OPEN_TYPE | MCI_OPEN_ELEMENT,(DWORD)&mciOpen);
if(mciError)
{
mciGetErrorString(mciError,buf,128);
printf("send MCI_OPEN command failed:%s\n",buf);
return;
}
UINT DeviceID = mciOpen.wDeviceID ;
MCI_PLAY_PARMS mciPlay;

mciError = mciSendCommand(DeviceID,MCI_PLAY,0 ,(DWORD)&mciPlay);
if(mciError)
{
printf("send MCI_PLAY command failed\n");
return;
}

/*
while(1)
{
sprintf(str,"now playing\t%d\tseconds",i);
printf("%s\r",str);
i++;
Sleep(1000);
}
*/
}

❻ MFC配合MCI函数播放AVI视频问题没图像…

可以的,我来

❼ 急求一个用MCI设计的数字视频播放器!

#include <MMSystem.h>
#include <Vfw.h>
#include <shlobj.H>

#pragma comment(lib, "winmm.lib")
#pragma comment(lib, "Vfw32.lib")
#define AudioStereo 0
#define AudioLeft 1
#define AudioRight 2
WNDPROC OldProc;

LPSTR GetDriverID(LPSTR ff);
bool OpenMusic(LPSTR FileName,HWND hWnd);
bool PlayMusic();
long GetMusicLength();
bool PutToWindow(RECT rc);
long GetMusicPos();
bool SetMusicPos(long Position);
bool PauseMusic();
bool CloseMusic();
bool SetAudioSource(int AudioSource);
bool PlayFullScreen();
bool SetVolume(int Volume);
bool SetSpeed(int Speed);
bool SetAudioOnOff(bool AudioOff);
bool SetWindowShow(bool WindowOff);
bool IsPlaying();
HWND GetWindowHandle();
MCIDEVICEID GetDeviceID();
LRESULT CALLBACK MCIWindowProc(HWND hWnd,UINT message,WPARAM wParam,LPARAM lParam);
bool ShowOpenSave(LPSTR FileName,bool OpenOrSave,HWND hWnd);
bool SavePicture(LPSTR FileName,HWND hWnd);
/*'======================================================*\
'根据文件名,确定设备
\'=======================================================*/
LPSTR GetDriverID(LPSTR ff)
{
char aa[3];
int i;
char bb[3];
int lenff=strlen(ff);
for(i=0;i<3;i++){
aa[i]=ff[lenff-3+i];
if(aa[i]>=97||aa[i]<=122)aa[i]-=32;
}
aa[3]=0;
strcpy(bb,"MID");
if(strcmp(aa,bb)==0)return "Sequencer";
strcpy(bb,"RMI");
if(strcmp(aa,bb)==0)return "Sequencer";
strcpy(bb,"IDI");
if(strcmp(aa,bb)==0)return "Sequencer";
strcpy(bb,"WAV");
if(strcmp(aa,bb)==0)return "Waveaudio";
return "MPEGVideo";
}
//=======================================================
//打开MCI设备,FILENAME为文件名,传值代表成功与否
//=======================================================
bool OpenMusic(LPSTR FileName,HWND hWnd=NULL)
{
CloseMusic();
CString ShortPathName;
CString tmpStr=FileName;
if(tmpStr.Left(7)=="http://")
ShortPathName=FileName;
else
GetShortPathName(FileName,
ShortPathName.GetBuffer(0), 255);
// MessageBox(NULL,ShortPathName.GetBuffer(0),"",MB_OK);
char *DrvID=GetDriverID(ShortPathName.GetBuffer(0));
CString lpstrCommand;
lpstrCommand.Format("open %s type %s alias NOWMUSIC",
ShortPathName.GetBuffer(0), DrvID);
if(strcmp(DrvID,"MPEGVideo")>=0)
{
if(hWnd!=NULL)
lpstrCommand.Format("open %s type %s alias NOWMUSIC parent %d style child",
ShortPathName.GetBuffer(0), DrvID,(int)hWnd);
else lpstrCommand+=" style overlapped ";}
if(mciSendString(lpstrCommand.GetBuffer(0),NULL,0,0)==0)
{
OldProc=(WNDPROC)GetWindowLong(GetWindowHandle(),GWL_WNDPROC);
SetWindowLong(GetWindowHandle(),GWL_WNDPROC,(long)MCIWindowProc);
return true;
}
return false;
}
//=======================================================
//关闭MCI设备,FILENAME为文件名,传值代表成功与否
//=======================================================
bool CloseMusic()
{
if(mciSendString("close NOWMUSIC", NULL, 0, 0)==0)
return true;
else return false;
}
//'======================================================
//'播放文件
//'======================================================
bool PlayMusic()
{
if(mciSendString("play NOWMUSIC", NULL, 0, 0)==0)
return true;
else return false;

}
//'======================================================
//'获取媒体的长度
//'======================================================
long GetMusicLength()
{
char RefStr[80];
mciSendString("status NOWMUSIC length", RefStr, 80, 0);
return atol(RefStr);
}
//'======================================================
//'添充画面
//'======================================================
bool PutToWindow(RECT rc)
{
CString lpstrCommand;
lpstrCommand.Format("put NOWMUSIC window at %d %d %d %d",
rc.left,rc.top,rc.right-rc.left,rc.bottom-rc.top);
if(mciSendString(lpstrCommand.GetBuffer(0),NULL,0,0)==0)
return true;
else return false;
}
//'======================================================
//'获取当前播放进度
//'======================================================
long GetMusicPos()
{
char RefStr[80];
mciSendString("status NOWMUSIC position", RefStr, 80, 0);
return atol(RefStr);
}
//'======================================================
//'设置媒体的当前进度
//'======================================================
bool SetMusicPos(long Position)
{
CString lpstrCommand;
lpstrCommand.Format("seek NOWMUSIC to %d",
Position);
if(mciSendString(lpstrCommand.GetBuffer(0),NULL,0,0)==0)
return true;
else return false;
}
//'======================================================
//'暂停播放
//'======================================================
bool PauseMusic()
{
if(mciSendString("pause NOWMUSIC", NULL, 0, 0)==0)
return true;
else return false;
}
//'======================================================
//'设置声道
//'======================================================
bool SetAudioSource(int AudioSource)
{
CString lpstrCommand;
lpstrCommand="setaudio NOWMUSIC source to ";
switch(AudioSource){
case AudioStereo:
lpstrCommand+="stereo";
break;
case AudioLeft:
lpstrCommand+="left";
break;
case AudioRight:
lpstrCommand+="right";
break;
}
if(mciSendString(lpstrCommand.GetBuffer(0),NULL,0,0)==0)
return true;
else return false;
}
//'======================================================
//'全屏播放
//'======================================================
bool PlayFullScreen()
{
if(mciSendString("play NOWMUSIC fullscreen", NULL, 0, 0)==0)
return true;
else return false;
}
//'=====================================================
//'设置声音大小1-1000
//'=====================================================
bool SetVolume(int Volume)
{
CString lpstrCommand;
lpstrCommand.Format("setaudio NOWMUSIC volume to %d",
Volume);
if(mciSendString(lpstrCommand.GetBuffer(0),NULL,0,0)==0)
return true;
else return false;
}
//'=====================================================
//'设置播放速度1-2000
//'=====================================================
bool SetSpeed(int Speed)
{
CString lpstrCommand;
lpstrCommand.Format("set NOWMUSIC speed %d",
Speed);
if(mciSendString(lpstrCommand.GetBuffer(0),NULL,0,0)==0)
return true;
else return false;
}
//'====================================================
//'静音True为静音,FALSE为取消静音
//'====================================================
bool SetAudioOnOff(bool AudioOff)
{
if(AudioOff){
if(mciSendString("setaudio NOWMUSIC off",NULL,0,0)==0)
return true;
}
else{
if(mciSendString("setaudio NOWMUSIC on",NULL,0,0)==0)
return true;
}
return false;
}
//'====================================================
//'是否有画面True为有,FALSE为取消
//'====================================================
bool SetWindowShow(bool WindowOff)
{
if(WindowOff){
if(mciSendString("window NOWMUSIC state show",NULL,0,0)==0)
return true;
}
else{
if(mciSendString("window NOWMUSIC state hide",NULL,0,0)==0)
return true;
}
return false;
}
//'====================================================
//'获得当前媒体的状态是不是在播放
//'====================================================
bool IsPlaying()
{
// char RefStr[10];
CString RefStr;
if(mciSendString("status NOWMUSIC mode",
RefStr.GetBuffer(10), 10, 0)==0)
{
if(RefStr.Find("playing")>=0||
RefStr.Find("播放")>=0)
return true;
}
return false;
}
//'====================================================
//'获得播放窗口的handle
//'====================================================
HWND GetWindowHandle()
{
char RefStr[80];
mciSendString("status NOWMUSIC window handle", RefStr, 80, 0);
return (HWND)atol(RefStr);
}
//'====================================================
//'获取DeviceID
//'====================================================
MCIDEVICEID GetDeviceID()
{
return mciGetDeviceID("NOWMUSIC");
}
//'====================================================
//'处理窗口事件
//'====================================================
LRESULT CALLBACK MCIWindowProc(HWND hWnd,UINT message,
WPARAM wParam,LPARAM lParam)
{

// HDC hdc;
int wmId;

switch (message)
{
case WM_COMMAND:
wmId = LOWORD(wParam);
//MessageBox(NULL,"OK","sd",MB_OK);
/*switch(wmId)
{
default:
break;
}//*/
break;
case WM_LBUTTONUP:
return 0;
break;
case WM_RBUTTONUP:
POINT pt;

GetCursorPos(&pt);
break;
case WM_PAINT:

break;

default:
break;
}
return CallWindowProc(OldProc,hWnd,
message,wParam,lParam);

}

这些都是没用类的,直接用的MCI API,这玩意不用必须把它集合成类吧。

❽ MCI怎样将视频固定在当前窗口播放

BOOL CMciCmdDlg::OnInitDialog()
{
CDialog::OnInitDialog();

// Set the icon for this dialog. The framework does this automatically
// when the application's main window is not a dialog
SetIcon(m_hIcon, TRUE); // Set big icon
SetIcon(m_hIcon, FALSE); // Set small icon
m_strFileName = "F:\\mywork\\mcicmd\\aaa.avi"; // 得到选中文件
Open(); // 打开选中文件
DWORD dwFlags;
MCI_DGV_PLAY_PARMS mciPlay;
mciPlay.dwCallback = (LONG)this->GetSafeHwnd();
mciPlay.dwFrom = mciPlay.dwTo = 0;
dwFlags = MCI_NOTIFY;
mciSendCommand(m_MCIDeviceID, MCI_PLAY, dwFlags,
(DWORD)(LPMCI_DGV_PLAY_PARMS)&mciPlay); // 播放
// TODO: Add extra initialization here

return TRUE; // return TRUE unless you set the focus to a control
}
在OnInitDialog()中加入
m_strFileName = "F:\\mywork\\mcicmd\\aaa.avi"; // 得到选中文件
Open(); // 打开选中文件
DWORD dwFlags;
MCI_DGV_PLAY_PARMS mciPlay;
mciPlay.dwCallback = (LONG)this->GetSafeHwnd();
mciPlay.dwFrom = mciPlay.dwTo = 0;
dwFlags = MCI_NOTIFY;
mciSendCommand(m_MCIDeviceID, MCI_PLAY, dwFlags,
(DWORD)(LPMCI_DGV_PLAY_PARMS)&mciPlay); // 播放
关键是加入mciPlay.dwCallback = (LONG)this->GetSafeHwnd();

❾ VB如何用mcisengstring播放视频

请问是什么原因如何解决? 控制台可能不支持其它格式的多媒体文件 你可以用360安全卫士关了一个播放器,或关了一个占用MIC的程序试一试

❿ 急!!请问VB中如何获取mci控件或API函数“mcisendstring ”默认播放视频窗口的句柄

用FindWindow查找,mmcontrol控件的默认播放窗口的标题就是它正在播放的文件的名字,知道了这个就能找到它Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
默认播放窗口句柄 = FindWindow(vbNullString, "正在播放的那个文件的文件名")

热点内容
绿洲的主题曲 发布:2021-03-16 21:51:32 浏览:239
逃身连续剧 发布:2021-03-16 21:50:58 浏览:188
美味奇缘里的插曲 发布:2021-03-16 21:49:11 浏览:827
调查插曲 发布:2021-03-16 21:48:10 浏览:591
女英雄台词 发布:2021-03-16 21:47:36 浏览:458
加勒比女海盗3演员表 发布:2021-03-16 21:42:59 浏览:378
韩剧手机热播剧 发布:2021-03-16 21:42:12 浏览:791
好看又简单画的年画 发布:2021-03-16 21:41:54 浏览:4
哥斯拉大战金刚预告片 发布:2021-03-16 21:40:51 浏览:246
落叶影评 发布:2021-03-16 21:40:19 浏览:121