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


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

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

  • 相关阅读:
    (五)Hibernate 操作对象
    (四)关联关系一对多映射
    (三)映射对象标识符(OID)
    随机取数据
    Delphi的时间处理
    调用MYSQL存储过程实例
    php接收数据
    NodeJS入门
    idHTTP访问百度
    delphi 从TWebBrowser WebBrowser得到全部html源码
  • 原文地址:https://www.cnblogs.com/songliquan/p/3261504.html
Copyright © 2020-2023  润新知