C++ 查找目录路径
我正在制作一个windows应用程序,现在我可以在单击“打开”时找到文件的路径,但是如何才能找到目录路径呢?例如,如果用户选择“file.txt”,那么我想获得“file.txt”的路径(它在磁盘上的位置)。我使用的是ATL/WTL和VS 2013C++ 查找目录路径,c++,windows,C++,Windows,我正在制作一个windows应用程序,现在我可以在单击“打开”时找到文件的路径,但是如何才能找到目录路径呢?例如,如果用户选择“file.txt”,那么我想获得“file.txt”的路径(它在磁盘上的位置)。我使用的是ATL/WTL和VS 2013 OPENFILENAME m_ofn; BOOL m_bOpenFileDialog = true; // TRUE for file open, FALSE for file save TCHAR m_szFileTitle[_MAX_FNAM
OPENFILENAME m_ofn;
BOOL m_bOpenFileDialog = true; // TRUE for file open, FALSE for file save
TCHAR m_szFileTitle[_MAX_FNAME];// contains file title after return
TCHAR m_szFileName[_MAX_PATH]; // contains full path name after return
memset(&m_ofn, 0, sizeof(m_ofn));
m_szFileName[0] = _T('\0');
m_szFileTitle[0] = _T('\0');
m_ofn.lStructSize = sizeof(m_ofn);
m_ofn.lpstrFile = m_szFileName;
m_ofn.nMaxFile = _MAX_PATH;
m_ofn.lpstrDefExt = _T("bmp");
m_ofn.lpstrFileTitle = (LPTSTR)m_szFileTitle;
m_ofn.nMaxFileTitle = _MAX_FNAME;
m_ofn.Flags = OFN_HIDEREADONLY | OFN_FILEMUSTEXIST |
OFN_OVERWRITEPROMPT | OFN_EXPLORER |
OFN_ENABLEHOOK | OFN_ENABLESIZING;
m_ofn.lpstrFilter = _T("Image Files (*.bmp;*.jpg;*.jpe;*.gif;*.tga)\0*.bmp;*.jpg;*.jpe;*.gif;*.tga\0All Files\0*.*\0");
m_ofn.hInstance = ModuleHelper::GetResourceInstance();
m_ofn.lpfnHook = NULL;
m_ofn.hwndOwner = NULL;
BOOL bRet;
bRet = ::GetOpenFileName(&m_ofn);
char gcd;
gcd = GetCurrentDirectory(sizeof(m_ofn), m_szFileName);
m_view.Report("Filename = %S\n", m_szFileName);
您的
m_of n
对象的lpstrFile
成员包含file.txt
的完整路径。然后,您可以使用删除尾随的\file.txt
部分。您的m\u of n
对象的lpstrFile
成员包含file.txt
的完整路径。你可以删除尾随<代码>文件.txt< /C++ >。部分。它是C++。它是一个混合的,它没有有效的C。不要用C标记来C++代码。@ WakkaDroid听起来好像你正在寻找函数(或者在Vista或以后,<代码> IfIdiaLabe[/Cuff])。奥拉夫:你能在别处进行十字军东征吗?如果您发现问题的标签不合适,请使用链接。这不需要产生像通常对你产生的那样多的噪音。谢谢。这不是C。它是C++。它是一个混合的C。不使用C标签来C++代码。@ WakkaDroid听起来好像你正在寻找函数(或者在Vista或以后,<代码> IfIdiaLabe[/Cuff])。奥拉夫:你能在别处进行十字军东征吗?如果您发现问题的标签不合适,请使用链接。这不需要产生像通常对你产生的那样多的噪音。非常感谢。从Windows 8开始提供。对于Windows 8之前的版本,你可以考虑使用(贬低)。@ LLNScTaby我尝试过,但它似乎不起作用。我做错了什么?@ WakkaDroid:我们不是通灵。这可能是一个很好的问题,但在你发布新问题之前,请给出一个简单的例子。如果您给它一个硬编码的C:\Test\file.txt
输入,它能工作吗?显然,该示例应该编译并运行。但是,当您将当前代码剥离到最小的示例时,您可能会发现您的bug。从Windows 8开始提供。对于Windows 8之前的版本,你可以考虑使用(贬低)。@ LLNScTaby我尝试过,但它似乎不起作用。我做错了什么?@ WakkaDroid:我们不是通灵。这可能是一个很好的问题,但在你发布新问题之前,请给出一个简单的例子。如果您给它一个硬编码的C:\Test\file.txt
输入,它能工作吗?显然,该示例应该编译并运行。但是,当您将当前代码剥离到最小的示例时,您可能会发现您的bug。