关于C++下打开文件对话框的问题,

我使用了这一段TCHARszBuffer[MAX_PATH]={0};OPENFILENAMEofn={0};ofn.lStructSize=sizeof(ofn);HW... 我使用了这一段
TCHAR szBuffer[MAX_PATH] = {0};
OPENFILENAME ofn= {0};
ofn.lStructSize = sizeof(ofn);
HWND hwnd = WindowFromDC(wglGetCurrentDC());
ofn.hwndOwner =hwnd;
ofn.lpstrFilter = _T("0所有文件(*.*)\0*.*\0");//要选择的文件后缀
ofn.lpstrInitialDir = _T("D:\\Program Files");//默认的文件路径
ofn.lpstrFile = szBuffer;//存放文件的缓冲区
ofn.nMaxFile = sizeof(szBuffer)/sizeof(*szBuffer);
ofn.nFilterIndex = 0;
ofn.Flags = OFN_PATHMUSTEXIST | OFN_FILEMUSTEXIST | OFN_EXPLORER ;//标志如果是多选要加上OFN_ALLOWMULTISELECT
BOOL bSel = GetOpenFileName(&ofn);
确实可以获得路径的,但是问题是用了这段函数之后,我程序里面其他使用相对路径的地方全部出错的,必须改为绝对路径才行,求指导怎么改这段函数是它不会影响到其他的路径读取
展开
 我来答
fnwzk
推荐于2016-07-16 · TA获得超过494个赞
知道小有建树答主
回答量:400
采纳率:0%
帮助的人:436万
展开全部
    TCHAR szDrive[MAX_PATH] = {0};
    TCHAR szDir[MAX_PATH] = {0};
    TCHAR szFileName[MAX_PATH] = {0};
    TCHAR szExt[MAX_PATH] = {0};
    _tsplitpath(szBuffer, szDrive, szDir, szFileName, szExt);
    _tcscat(szFileName, szExt);

szFileName 就是你需要的不带路径的文件名了.

追问
我先你没理解我的意思,我程序里面的素材调用都是调用的程序所在的文件夹下的图片,用的是相对路径,但是当我用上面的代码打开文件选择框之后,程序就不能识别相对路径了,只能识别绝对路径,能想办法帮我解决吗,谢谢
追答
不明白你说的程序不能识别相对路径是什么意思.
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
ecrasyy
2013-08-05 · TA获得超过309个赞
知道小有建树答主
回答量:308
采纳率:0%
帮助的人:174万
展开全部
//调用这个文件对话框api之前,先使用GetCurrentDirectory来获取当前路径。
WINBASEAPI DWORD WINAPI GetCurrentDirectoryA( IN DWORD nBufferLength, OUT LPSTR lpBuffer );

//调用这个文件对话框api之后,重新设置CurrentDirectory:SetCurrentDirectory
BOOL SetCurrentDirectory(
   LPCTSTR pstrDirName 
);
追问
由于框架的原因,我这边不能调用windows,h头文件,这两个函数的都要用的windows.h吧?
追答
你先写代码,编译通不过再说。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2013-08-05
展开全部
下载或查找文件时必须用绝对路径。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式