相对路径与绝对路径之比较

绝对路径很简单,但是隐患比较大,如果程序位置有变动,就会出现找不到文件的问题。使用起来也比较简单。如

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];//定义的流媒体操作对象

 

 

posted @ 2013-08-23 12:55  struggle_time  阅读(795)  评论(0编辑  收藏  举报