Chinaunix首页 | 论坛 | 博客
  • 博客访问: 515653
  • 博文数量: 77
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 689
  • 用 户 组: 普通用户
  • 注册时间: 2013-08-12 08:40
文章分类

全部博文(77)

文章存档

2018年(1)

2016年(3)

2015年(24)

2014年(49)

我的朋友

分类: Windows平台

2014-10-24 17:34:04


获取当前执行程序文件的路径:

使用GetModuleFileName 

点击(此处)折叠或打开

  1. CString FilePathName;
  2. #define MAX_PATH_ 256

  3. //获取当前运行程序路径
  4. GetModuleFileName(NULL,FilePathName.GetBuffer(MAX_PATH_ + 1),MAX_PATH_);
  5. FilePathName.ReleaseBuffer();

  6. //TCHAR path[MAX_PATH_];
  7. //::GetModuleFileName(NULL,path,MAX_PATH_);
  8. //CString FilePathName(path);

  9. int pos = FilePathName.ReverseFind(_T('\\')); //查找'\' (\\ 转义字符)
  10. FilePathName = FilePathName.Left(pos + 1); //提取'\'及之前的字符串
  11. FilePathName += _T("RedioFile.dat"); //重载
(GetBuffer()主要作用是将字符串的缓冲区长度锁定,ReleaseBuffer则是解除锁定,使得CString对象在以后的代码中继续可以实现长度自适应增长的功能。)
GetBuffer(int size)是用来返回一个你所指定大小可写内存的成员方法
ReleaseBuffer函数是用来告诉CString对象,你的GetBuffer所引用的内存已经使用完毕,现在必须对它进行封口,否则 CString将不会知道它现在所包含的字符串的长度,所以在使用完GetBuffer之后,必须立即调用ReleaseBuffer函数重置 CString的内部属性,其实也就是头部信息。

使用CFileDialog取得文件路径,然后用CFile打开:

点击(此处)折叠或打开

  1. CString pszFilename ;
  2. CFile file;
  3. CFileException fileException;

  4. CFileDialog dlg(TRUE,"dat","*.*");
  5. if(dlg.DoModal() == IDOK)
  6. {
  7. pszFilename = dlg.GetPathName();
  8. }

  9. if(!file.Open(pszFilename,CFile::modeRead,&fileException))
  10. {
  11. TRACE("Can't open file %s, error = %u\n",pszFilename,fileException.m_cause);
  12. }
1、构造函数
文件选择对话框的使用:首先构造一个对象并提供相应的参数,构造函数原型如下: 

点击(此处)折叠或打开

  1. CFileDialog:CFileDialog(BOOL bOpenFileDialog,
  2. LPCTSTR lpszDefExt=NULL,
  3. LPCTSTR lpszFileName=NULL,
  4. DWORD dwFlags = OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT,
  5. LPCTSTR lpszFilter=NULL,
  6. CWnd * pParentWnd=NULL);

bOpenFileDialog:TRUE为打开文件对话框;FALSE为保存文件对话框

lpszDefExt:缺省的扩展名

lpszFileName:缺省显示在文件名组合框的编辑框的文件名,一般可选NULL

dwFlags:对话框风格,一般为OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT, 即隐藏只读选项和覆盖已有文件前提示。

类型:

    OFN_HIDEREADONLY:隐藏只读选项

    OFN_OVERWRITEPROMPT:覆盖已有文件前提

    OFN_ALLOWMULTISELECT:允许选择多个文件

    OFN_CREATEPROMPT:如果输入的文件名不存在,则对话框返回询问用户是否根据次文件名创建文件的消息框

    OFN_FILEMUSTEXIST:只能输入已存在的文件名

    OFN_FORCESHOWHIDDEN:可以显示隐藏的文件

    OFN_NOREADONLYRETURN:不返回只读文件

   OFN_OVERWRITEPROMPT:保存的文件已存在时,显示文件已存在的信息

lpszFilter:文件筛选类型,它指明可供选择的文件类型和相应的扩展名。参数格式如: 
"Chart Files (*.xlc)|*.xlc|Worksheet Files (*.xls)|*.xls|Data Files (*.xlc;*.xls)|*.xlc; *.xls|All Files (*.*)|*.*||";文件类型说明和扩展名间用 | 分隔,同种类型文件的扩展名间可以用 ; 分割,每种文件类型间用 | 分隔,末尾用 || 指明。

pParentWnd:父窗口指针,一般可选NULL.

2、对话框选项常用属性(实例:dialog)

dialog.m_ofn.lpstrTitle:显示窗口标题。

dialog.m_ofn.lpstrInitialDir:初始化展开路径。

dlg.m_ofn.lpstrFile:默认文件

dlg.m_ofn.lpstrFilter:文件筛选类型,注意与lpszFilter区别,要用"\0",不能用"|"

如:dlg.m_ofn.lpstrFilter="所有文件\0*.*\0图像文件\0*.jpg;*.bmp;*.gif\0\0";

3、对话框常用方法:

INT_PTR CFileDialog::DoModal() 显示文件操作对话框,常用返回值:IDOK,点击了打开确定操作 IDCANCEL,取消 

CString CFileDialog::GetPathName( ) 得到完整的文件名,包括目录名和扩展名 如:c:\test\test.txt。注,多文件选择时返回目录名

CString CFileDialog::GetFileName( ) 得到完整的文件名,包括扩展名如:test.txt

CString CFileDialog::GetExtName( ) 得到完整的文件扩展名,如:txt

CString CFileDialog::GetFileTitle ( ) 得到完整的文件名,不包括目录名和扩展名如:test

POSITION CFileDialog::GetStartPosition( ) 对于选择了多个文件的情况得到第一个文件位置。

CString CFileDialog::GetNextPathName( POSITION& pos ) 对于选择了多个文件的情况得到下一个文件位置,并同时返回当前文件名。但必须已经调用过POSITION CFileDialog::GetStartPosition( )来得到最初的POSITION变量。

阅读(1536) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~