Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 查找目录路径_C++_Windows - Fatal编程技术网

C++ 查找目录路径

C++ 查找目录路径,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

我正在制作一个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_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。