关于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);
确实可以获得路径的,但是问题是用了这段函数之后,我程序里面其他使用相对路径的地方全部出错的,必须改为绝对路径才行,求指导怎么改这段函数是它不会影响到其他的路径读取 展开
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);
确实可以获得路径的,但是问题是用了这段函数之后,我程序里面其他使用相对路径的地方全部出错的,必须改为绝对路径才行,求指导怎么改这段函数是它不会影响到其他的路径读取 展开
展开全部
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 就是你需要的不带路径的文件名了.
追问
我先你没理解我的意思,我程序里面的素材调用都是调用的程序所在的文件夹下的图片,用的是相对路径,但是当我用上面的代码打开文件选择框之后,程序就不能识别相对路径了,只能识别绝对路径,能想办法帮我解决吗,谢谢
追答
不明白你说的程序不能识别相对路径是什么意思.
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
//调用这个文件对话框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
展开全部
下载或查找文件时必须用绝对路径。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询