绝对路径很简单,但是隐患比较大,如果程序位置有变动,就会出现找不到文件的问题。使用起来也比较简单。如
CString strPath = L""; strPath += "d:\work\1.avi";//这就是绝对路径
相对路径使用起来最方便,不用担心程序的位置变化引起的故障。
从IDE环境运行程序的时候,默认当前路径是工程项目所在路径,也就是dsp文件,sln文件所在路径。
//读取配置文件 CString strflash,strVideo; CString des = L""; ::GetCurrentDirectory(_MAX_PATH,des.GetBuffer(_MAX_PATH));//获取程序当前路径 des.ReleaseBuffer(); des += "\Config.ini";//读取配置文件,里面有要提取的文件名 //打开视频,循环播放 ::GetCurrentDirectory(_MAX_PATH,strflash.GetBuffer(_MAX_PATH)); strflash.ReleaseBuffer(); strflash += "\1.swf";//打开视频文件 m_flash.LoadMovie(0,strflash);//绝对路径,这个必须用绝对路径,函数要求是绝对路径 m_flash.Play(); m_flash.SetWindowPos(&CWnd::wndTopMost,rect1.left,rect1.top,rect1.Width(),rect1.Height(),SWP_SHOWWINDOW); //打开投影要播放的视频 GetPrivateProfileString(L"video"/*字段名*/,L"video"/*键名*/,L"1.avi"/*键值*/,strVideo.GetBuffer(_MAX_FNAME),_MAX_FNAME,des); strVideo.ReleaseBuffer(); m_pMovie = new CMovie(m_hWnd); m_pMovie->Open(strVideo.GetBuffer()); strVideo.ReleaseBuffer();
配置文件的格式要为
[SWF] //字段名 Swf=1.swf//键名及键值 [video]//字段名 video=1.avi//键名及键值
获取配置文件中的条目
DWORD GetPrivateProfileString(lpszSection, lpszKey, lpszDefault, lpszReturnBuffer, cchReturnBuffer, lpszFile);
其中
LPCTSTR lpAppName ------- INI文件中的一个字段名
LPCTSTR lpKeyName -------- lpAppName 下的一个键名,也就是里面具体的变量名
LPCTSTR lpString ---------是键值,也就是变量的值, 必须为LPCTSTR或CString类型
LPCTSTR lpFileName --------完整的INI文件路径名
LPCTSTR lpDefaut ----------如果没有其前两个参数值,则将此值赋给变量
LPSTR lpReturnedString --------接收INI文件中的值的CString对象,即接收缓冲区
DWORD nSize ------接收缓冲区的大小
如果需要读取多个视频文件,则可以这样处理
1 for(int i=0;i<VIDEO_NUMBER;i++)//读取视频文件 2 { 3 CString strNum = L"";//变量名 4 CString strVideoNumber = L"";//键值 5 strVideoNumber.Format(L"video%d",i); 6 strNum.Format(L"%d.avi",i); 7 GetPrivateProfileString(L"video",strVideoNumber,strNum,strVideoPath[i].GetBuffer(_MAX_FNAME),_MAX_FNAME,des); 8 strVideoPath[i].ReleaseBuffer(); 9 m_pMovie[i] = new CMovie(m_hWnd);//m_hWnd 为CWnd声明的public成员变量 10 m_pMovie[i]->Open(strVideoPath[i].GetBuffer()); 11 strVideoPath[i].ReleaseBuffer(); 12 }
其中
#define VIDEO_NUMBER 6 //视频的数量
CString strVideoNumber[VIDEO_NUMBER];//存放对应视频文件的键值
CMovie *m_pMovie[VIDEO_NUMBER];//定义的流媒体操作对象