在mfc中获取的文件路径是cstring型,想用fread和fopen这样的函数读取文件

在mfc中获取的文件路径是cstring型,想用fread和fopen这样的函数读取文件,第1张

已经获取了CString类型的文件路径,一般推荐使用CFile或者CStdioFile进行文件 *** 作。

fread也是可以的,打开的文件名参数使用cstringGetBuffer(0)就可以了,不过注意工程最好不要是UNICODE模式,这种模式下fread会有一些麻烦。

BROWSEINFO bInfo;

ZeroMemory(&bInfo, sizeof(bInfo));

bInfohwndOwner =GetSafeHwnd();

bInfolpszTitle = _T("请选择需要监视文件夹的路径: ");

bInfoulFlags = BIF_RETURNONLYFSDIRS;

LPITEMIDLIST lpDlist; //用来保存返回信息的IDList

lpDlist = SHBrowseForFolder(&bInfo) ; //显示选择对话框

if(lpDlist != NULL) //用户按了确定按钮

{

TCHAR chPath[MAX_PATH]; //用来存储路径的字符串

SHGetPathFromIDList(lpDlist, chPath);//把项目标识列表转化成字符串

CString m_strPath = chPath; //将TCHAR类型的字符串转换为CString类型的字符串

GetCurrentDirectory获取的是当前路径,并不是程序文件本身所在的路径,应用程序的当前路径是可以通过SetCurrentDirectory来改变的,当你调用CFileDialog打开文件以后,这个类就会调用SetCurrentDirectory来修改当前路径,所以你在保存时使用GetCurrentDirectory获取到的肯定是上次打开文件的那个路径,要想不改变当前路径,可以参考楼上兄弟的做法,但不推荐这样做,因为你下次打开文件的时候可能还是希望在上次打开的地方来打开,这本身是一种比较人性化的功能

如果你想获取程序本身所在的路径,可用API函数GetModuleFileName来获取,这个函数获取到的就是应用程序所在的路径,无论你是否确定当前路径是否会被改变,都建议不要用GetCurrentDirectory来获取应用程序的路径,因为不可预知会改变当前路径的因素太多了

要注意区分当前路径和应用程序所在路径,例如,你给程序创建一个快捷方式,快捷方式中的起始位置那一项设置的就是当前路径,与你目标程序的路径可以不一样;同样,在VC编译器里指定的工作路径也是当前路径,这个路径同样可以与你在命令里面设置的路径不一样,都是可以修改的

以上就是关于在mfc中获取的文件路径是cstring型,想用fread和fopen这样的函数读取文件全部的内容,包括:在mfc中获取的文件路径是cstring型,想用fread和fopen这样的函数读取文件、mfc编程,要用户选择一个文件夹,然后返回此文件夹的路径。不是要选择文件,是要文件夹的路径。、MFC 保存文件路径问题等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/9701136.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-01
下一篇 2023-05-01

发表评论

登录后才能评论

评论列表(0条)

保存