zoukankan      html  css  js  c++  java
  • mciSendCommand 音频视频播放命令函数

    //打开设备
    //typedef struct {
    //DWORD dwCallback;        //指定一个窗口句柄
    //MCIDEVICEID wDeviceID;   //为成功打开的文件返回 设备标识符. 
    //LPCSTR lpstrDeviceType;  //设备类型的名字或常量标识. (设备名可以从注册表或者 SYSTEM.INI 文件中获得) 
    //LPCSTR lpstrElementName; //设备元素 (通常是打开的文件全路径). 
    //LPCSTR lpstrAlias//可选别名
    //DWORD dwBufferSeconds;
    //} MCI_WAVE_OPEN_PARMS;




    //播放文件
    //typedef struct {
    //DWORD dwCallback;//指定一个窗口句柄
    //DWORD dwFrom;//设置播放起始点
    //DWORD dwTo;//设置播放结束点
    //} MCI_PLAY_PARMS;


    //查询信息
    //typedef struct {
    //DWORD dwCallback;
    //DWORD dwReturn;//返回的信息内容
    //DWORD dwItem;//请求查询的内容
    //DWORD dwTrack;//轨道的长度或数目
    //} MCI_STATUS_PARMS;


     /*
     * 函数名称:MCI_Open
     * 函数介绍:用mci命令打开文件
     * 输入参数:CString strPath, 文件的路径
     * 输出参数:无
     * 返回值 :mci命令的错误信息
     */
    1. DWORD dlg_login::MCIOpen(const CString &strPath)  
    2. {  
    3.     //打开MCI设备  
    4.     MCI_OPEN_PARMS mciOP;  
    5.     DWORD opReturn;  
    6.     MCIDEVICEID wIDDevioce;  //保存设备ID  
    7.     mciOP.lpstrDeviceType = NULL;  
    8.     mciOP.lpstrElementName = strPath;  //设置打开的文件的名称  
    9.     opReturn = mciSendCommand(NULL, MCI_OPEN, MCI_OPEN_ELEMENT, (DWORD)(LPVOID)&mciOP);  
    10.     if (opReturn == 0)  
    11.     {  
    12.         wIDDevioce = mciOP.wDeviceID;//播放设备Id  
    13.         wDevioceId = mciOP.wDeviceID;  
    14.   
    15.         //设置设备信息  
    16.         MCI_SET_PARMS mciSet;  
    17.         mciSet.dwTimeFormat = MCI_FORMAT_MILLISECONDS; //设置时间单位为毫秒  
    18.         mciSendCommand(wDevioceId, MCI_SET, MCI_SET_TIME_FORMAT, (DWORD)(LPVOID)&mciSet);  
    19.           
    20.         //设置当前播放位置跳转60秒  
    21.         MCISeek(100);  
    22.         //音频播放  
    23.         MCIPlay();  
    24.           
    25.         MCI_STATUS_PARMS mciStatus;  
    26.         mciStatus.dwItem = MCI_STATUS_TIME_FORMAT;  
    27.         DWORD sta2Return = mciSendCommand(wIDDevioce, MCI_STATUS, MCI_STATUS_ITEM, (DWORD)(LPVOID)&mciStatus);  
    28.         DWORD music_timestyle = mciStatus.dwReturn; //获得当前的时间格式  
    29.           
    30.         mciStatus.dwItem = MCI_STATUS_MODE;  
    31.         DWORD sta3Return = mciSendCommand(wIDDevioce, MCI_STATUS, MCI_STATUS_ITEM, (DWORD)(LPVOID)&mciStatus);  
    32.         DWORD music_playstyle = mciStatus.dwReturn; //获得当前播放工作模式 播放 526  暂停525   
    33.     }  
    34.     else  
    35.         wIDDevioce = NULL;  
    36.     return opReturn;  
    37. }  
    DWORD dlg_login::MCIOpen(const CString &strPath)
    {
    	//打开MCI设备
    	MCI_OPEN_PARMS mciOP;
    	DWORD opReturn;
    	MCIDEVICEID wIDDevioce;  //保存设备ID
    	mciOP.lpstrDeviceType = NULL;
    	mciOP.lpstrElementName = strPath;  //设置打开的文件的名称
    	opReturn = mciSendCommand(NULL, MCI_OPEN, MCI_OPEN_ELEMENT, (DWORD)(LPVOID)&mciOP);
    	if (opReturn == 0)
    	{
    		wIDDevioce = mciOP.wDeviceID;//播放设备Id
    		wDevioceId = mciOP.wDeviceID;
    
    		//设置设备信息
    		MCI_SET_PARMS mciSet;
    		mciSet.dwTimeFormat = MCI_FORMAT_MILLISECONDS; //设置时间单位为毫秒
    		mciSendCommand(wDevioceId, MCI_SET, MCI_SET_TIME_FORMAT, (DWORD)(LPVOID)&mciSet);
    		
    		//设置当前播放位置跳转60秒
    		MCISeek(100);
    		//音频播放
    		MCIPlay();
    		
    		MCI_STATUS_PARMS mciStatus;
    		mciStatus.dwItem = MCI_STATUS_TIME_FORMAT;
    		DWORD sta2Return = mciSendCommand(wIDDevioce, MCI_STATUS, MCI_STATUS_ITEM, (DWORD)(LPVOID)&mciStatus);
    		DWORD music_timestyle = mciStatus.dwReturn; //获得当前的时间格式
    		
    		mciStatus.dwItem = MCI_STATUS_MODE;
    		DWORD sta3Return = mciSendCommand(wIDDevioce, MCI_STATUS, MCI_STATUS_ITEM, (DWORD)(LPVOID)&mciStatus);
    		DWORD music_playstyle = mciStatus.dwReturn; //获得当前播放工作模式 播放 526  暂停525 
    	}
    	else
    		wIDDevioce = NULL;
    	return opReturn;
    }

    1. DWORD dlg_login::MCIPlay()  
    2. {  
    3.     MCI_PLAY_PARMS mciPP;  
    4.     DWORD opReturn;  
    5.     opReturn = mciSendCommand(wDevioceId, MCI_PLAY, MCI_NOTIFY, (DWORD)&mciPP);  
    6.     return opReturn;  
    7. }  
    DWORD dlg_login::MCIPlay()
    {
        MCI_PLAY_PARMS mciPP;
        DWORD opReturn;
        opReturn = mciSendCommand(wDevioceId, MCI_PLAY, MCI_NOTIFY, (DWORD)&mciPP);
        return opReturn;
    }

    1. DWORD dlg_login::MCIStatus_music_length()  
    2. {  
    3.     MCI_STATUS_PARMS mciStatus;  
    4.     mciStatus.dwItem = MCI_STATUS_LENGTH;  
    5.     DWORD staReturn = mciSendCommand(wDevioceId, MCI_STATUS, MCI_STATUS_ITEM, (DWORD)(LPVOID)&mciStatus);  
    6.     DWORD music_alltime = mciStatus.dwReturn / 1000; //音乐总时间  
    7.     return music_alltime;  
    8. }  
    DWORD dlg_login::MCIStatus_music_length()
    {
        MCI_STATUS_PARMS mciStatus;
        mciStatus.dwItem = MCI_STATUS_LENGTH;
        DWORD staReturn = mciSendCommand(wDevioceId, MCI_STATUS, MCI_STATUS_ITEM, (DWORD)(LPVOID)&mciStatus);
        DWORD music_alltime = mciStatus.dwReturn / 1000; //音乐总时间
        return music_alltime;
    }

    1. DWORD dlg_login::MCIStatus_music_pos()  
    2. {  
    3.     MCI_STATUS_PARMS mciStatus;  
    4.     mciStatus.dwItem = MCI_STATUS_POSITION;  
    5.     DWORD sta1Return = mciSendCommand(wDevioceId, MCI_STATUS, MCI_STATUS_ITEM, (DWORD)(LPVOID)&mciStatus);  
    6.     DWORD music_timeing = mciStatus.dwReturn / 1000; //音乐当前播放时间  
    7.     return music_timeing;  
    8. }  
    DWORD dlg_login::MCIStatus_music_pos()
    {
        MCI_STATUS_PARMS mciStatus;
        mciStatus.dwItem = MCI_STATUS_POSITION;
        DWORD sta1Return = mciSendCommand(wDevioceId, MCI_STATUS, MCI_STATUS_ITEM, (DWORD)(LPVOID)&mciStatus);
        DWORD music_timeing = mciStatus.dwReturn / 1000; //音乐当前播放时间
        return music_timeing;
    }
    1. //从制定位置开始播放  
    2. void send_music_from_pos()  
    3. {  
    4.     MCI_STATUS_PARMS mciStatus;  
    5.     mciStatus.dwItem = MCI_STATUS_POSITION;  
    6.     DWORD sta1Return = mciSendCommand(wDevioceId, MCI_STATUS, MCI_STATUS_ITEM, (DWORD)(LPVOID)&mciStatus);  
    7.     DWORD music_timeing = mciStatus.dwReturn / 1000; //音乐当前播放时间  
    8.     MCI_PLAY_PARMS PlayParms;  
    9.     PlayParms.dwFrom = music_timeing; // 指定从什么地方(时间)播放  
    10.     DWORD ret1 = mciSendCommand(wDevioceId, MCI_PLAY, MCI_NOTIFY, (DWORD)(LPVOID)&PlayParms);  
    11. }  
    //从制定位置开始播放
    void send_music_from_pos()
    {
        MCI_STATUS_PARMS mciStatus;
        mciStatus.dwItem = MCI_STATUS_POSITION;
        DWORD sta1Return = mciSendCommand(wDevioceId, MCI_STATUS, MCI_STATUS_ITEM, (DWORD)(LPVOID)&mciStatus);
        DWORD music_timeing = mciStatus.dwReturn / 1000; //音乐当前播放时间
        MCI_PLAY_PARMS PlayParms;
        PlayParms.dwFrom = music_timeing; // 指定从什么地方(时间)播放
        DWORD ret1 = mciSendCommand(wDevioceId, MCI_PLAY, MCI_NOTIFY, (DWORD)(LPVOID)&PlayParms);
    }

    //关闭指定设备

    1. void close_mci()  
    2. {  
    3.     DWORD retclose=mciSendCommand(wDevioceId, MCI_CLOSE, NULL, NULL);  
    4. }  
    void close_mci()
    {
        DWORD retclose=mciSendCommand(wDevioceId, MCI_CLOSE, NULL, NULL);
    }
    1. //调节音量  
    2. DWORD dlg_login::MCISetVolume(DWORD dwVol)  
    3. {  
    4.     MCI_DGV_SETAUDIO_PARMS  mciSetAudioPara;  
    5.     mciSetAudioPara.dwCallback  = NULL;  
    6.     mciSetAudioPara.dwItem   = MCI_DGV_SETAUDIO_VOLUME;  
    7.     mciSetAudioPara.dwValue  = dwVol; //此处就是音量大小 (0--1000)  
    8.     DWORD dwReturn = mciSendCommand(wDevioceId, MCI_SETAUDIO, MCI_DGV_SETAUDIO_VALUE |  MCI_DGV_SETAUDIO_ITEM, (DWORD)(LPVOID)&mciSetAudioPara);  
    9.     return dwReturn;  
    10. }  
    //调节音量
    DWORD dlg_login::MCISetVolume(DWORD dwVol)
    {
    	MCI_DGV_SETAUDIO_PARMS	mciSetAudioPara;
    	mciSetAudioPara.dwCallback	= NULL;
    	mciSetAudioPara.dwItem	 = MCI_DGV_SETAUDIO_VOLUME;
    	mciSetAudioPara.dwValue	 = dwVol; //此处就是音量大小 (0--1000)
    	DWORD dwReturn = mciSendCommand(wDevioceId, MCI_SETAUDIO, MCI_DGV_SETAUDIO_VALUE |  MCI_DGV_SETAUDIO_ITEM, (DWORD)(LPVOID)&mciSetAudioPara);
    	return dwReturn;
    }


    jpg改rar 

  • 相关阅读:
    Xml 映射文件中,除了常见的 select|insert|updae|delete 标签之外,还有哪些标签?
    zookeeper 是如何保证事务的顺序一致性的?
    什么是 Callable 和 Future?
    MyBatis 实现一对一有几种方式?具体怎么操作的?
    Zookeeper 对节点的 watch监听通知是永久的吗?为什么 不是永久的?
    合同测试你懂什么?
    查看各类环境变量用什么命令?
    我们如何进行跨功能测试?
    怎么查看系统支持的所有信号?
    Mybatis 是否支持延迟加载?如果支持,它的实现原理是什么?
  • 原文地址:https://www.cnblogs.com/kuangke/p/6626845.html
Copyright © 2011-2022 走看看