加载中…
个人资料
吴超
吴超
  • 博客等级:
  • 博客积分:0
  • 博客访问:1,097,253
  • 关注人气:210
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
相关博文
推荐博文
谁看过这篇博文
加载中…
正文 字体大小:

vc 使用CFileDialog打开或保存文件

(2014-08-15 18:40:03)
标签:

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|所有文件(*.*) |*.*||" );


 

0

阅读 评论 收藏 转载 喜欢 打印举报/Report
  • 评论加载中,请稍候...
发评论

    发评论

    以上网友发言只代表其个人观点,不代表新浪网的观点或立场。

      

    新浪BLOG意见反馈留言板 电话:4000520066 提示音后按1键(按当地市话标准计费) 欢迎批评指正

    新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 会员注册 | 产品答疑

    新浪公司 版权所有