您的位置:首页 > 其它

vc 使用CFileDialog打开或保存文件

2015-10-14 11:48 281 查看
vc 使用CFileDialog打开或保存文件

vc 使用CFileDialog打开或保存文件

 

今天是我的生日,也祝福自己生日快乐,以后要淡化生日。

 

//一。单选的“浏览文件对话框”

void one_select_file(CString &strPath,CString &strFile,BOOL open_save)

{//单选的“浏览文件对话框”

//CFileDialog第一个参数, TRUE为"打开"Open, FALSE为"另存"Save As

文件(*.csv)|*.csv|所有文件(*.*) |*.*||" );

  CFileDialog fileDlg(open_save ,  // TRUE打开Open,FALSE保存Save As文件对话框

    ".csv",  // 默认的打开文件的类型

    strFile, // 默认打开的文件名 

    OFN_HIDEREADONLY|OFN_OVERWRITEPROMPT | OFN_NOCHANGEDIR ,  // 单选打开

    "Excel文件(*.csv)|*.csv|所有文件(*.*) |*.*||"  // 打开的文件类型

  );

 fileDlg.m_ofn.lpstrInitialDir=strPath;//初始化路径。

  if(fileDlg.DoModal() == IDOK)

  {

    strFile = fileDlg.GetPathName();//返回选择或输入的文件名称,

  }

}

 

//二。多选的“浏览文件对话框”

void mul_select_file(CString strPath,CString &strFiles,CString split)

{

  CFileDialog fileDlg(TRUE,  // TRUE打开,FALSE保存文件对话框

    ".csv",  // 默认的打开文件的类型

    NULL, // 默认打开的文件名

    OFN_ALLOWMULTISELECT|OFN_ENABLESIZING|OFN_HIDEREADONLY | OFN_NOCHANGEDIR,  // 多选打开

    "Excel文件(*.csv)|*.csv|所有文件(*.*) |*.*||"  // 打开的文件类型

  );

  fileDlg.m_ofn.lpstrTitle="选择多个文件";

  fileDlg.m_ofn.lpstrInitialDir=strPath.GetBuffer(0);  // 设置默认路径

 

  if (IDOK==fileDlg.DoModal())

  {

    CString pathName;

    POSITION pos_file;

    pos_file = fileDlg.GetStartPosition();

  

    strFiles="";

    while(NULL!=pos_file)

    {//循环读出每个文件路径和名称

      pathName=fileDlg.GetNextPathName(pos_file);

      strFiles+=pathName+split;//"|";

    } 

  }

}

 

//三。调用方式

void test()

{

 CString strPath="c:/";

 CString strFileName="my.csv";

//1. 获得要“打开”文件

 one_select_file(strPath,strFileName,TRUE); //TRUE打开文件

//。。。获得文件名称后,可以在这里做“打开”,从磁盘文件获取内容

 

//2. 获得要“另存”文件名称

 one_select_file(strPath,strFileName,FALSE); //FALSE另存文件

//。。。获得文件名称后,可以在这里做“另存”,将内容存入磁盘文件

 

//3. 获得选择的多个文件全名称

 CString strFiles;

 CString split="|";

 mul_select_file(strPath,strFiles,split);

 AfxMessageBox(strFiles);

 

}

 

//四 初始路径的指定

1 实际上是CFileDialog 来回切换路径,第三个参数filename若使用相对路径是找不到的,只有包含绝对路径才能找到,比如 filename=“c:\test\*.*” ,filename=“ c:\test\*.mp3”  才导向目标路径,这点要注意。

 CFileDialog fd(TRUE ,NULL,filename,OFN_HIDEREADONLY ,"音频文件|*.mp3|所有文件(*.*) |*.*||");

 

 2 为了 避免当前路径改变,则要把在CFileDialog的第四个参数dwFlags标志设置为OFN_NOCHANGEDIR

只读,隐含,覆盖写,不改变路径,最完整的方法如下:

CFileDialog fDlg(open_save ,NULL , filename , OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT | OFN_NOCHANGEDIR , "波形文件(*.csv)|*.csv|所有文件(*.*) |*.*||" );
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: