21xrx.com
2025-04-05 12:29:37 Saturday
文章检索 我的文章 写文章
如何用C++打开窗口并获取文件路径和文件名
2023-07-10 05:46:12 深夜i     22     0
C++ 打开窗口 获取文件路径 获取文件名

在使用C++编程时,经常需要打开窗口来选择文件或文件夹,并获取文件路径和文件名。在本篇文章中,我们将介绍如何使用C++打开窗口并获取文件路径和文件名。

首先,我们需要引入Windows.h头文件,这个文件包含了一些常用的窗口函数。其中,使用GetOpenFileName函数可以打开一个文件选择对话框,获取用户所选的文件路径和文件名。

以下是使用GetOpenFileName函数的示例代码:

#include <Windows.h>
int main()
{
  // 初始化OPENFILENAME结构体
  OPENFILENAME ofn = { 0 };
  char szFileName[MAX_PATH] = { 0 };
  char szFilter[] = "Text Files (*.txt)\0*.txt\0All Files (*.*)\0*.*\0\0";
  // 设置结构体参数
  ofn.lStructSize = sizeof(ofn);
  ofn.hwndOwner = NULL;
  ofn.lpstrFilter = szFilter;
  ofn.lpstrFile = szFileName;
  ofn.nMaxFile = MAX_PATH;
  ofn.Flags = OFN_EXPLORER | OFN_FILEMUSTEXIST | OFN_HIDEREADONLY;
  ofn.lpstrDefExt = "txt";
  // 打开文件对话框
  if (GetOpenFileName(&ofn) == TRUE)
  {
    // 获取文件名和文件路径
    char* pszFileName = ofn.lpstrFile;
    char szFilePath[MAX_PATH] = { 0 };
    strcpy(szFilePath, pszFileName);
    for (int i = strlen(szFilePath) - 1; i >= 0; i--)
    {
      if (szFilePath[i] == '\\')
      {
        szFilePath[i] = 0;
        break;
      }
    }
    MessageBox(NULL, szFileName, "File Name", MB_OK);
    MessageBox(NULL, szFilePath, "File Path", MB_OK);
  }
  return 0;
}

在以上示例代码中,我们使用了一个OPENFILENAME结构体来初始化文件选择对话框的参数,包括窗口句柄、文件类型、默认扩展名等。然后,调用GetOpenFileName函数来打开文件选择对话框,如果用户选择了一个文件,该函数会返回TRUE,我们可以通过结构体中的lpstrFile成员获取用户选择的文件名和路径。

在以上代码中,我们通过将文件名和路径分离的方式获取了文件路径。具体地,我们首先复制一份文件名,然后从右向左扫描文件名的每个字符,找到最后一个反斜杠字符(即文件路径与文件名的分界线),将其替换成字符串结束符号'\0',这样就得到了文件路径。

最后,我们通过调用MessageBox函数来显示获取到的文件名和文件路径。这个函数可以在一个窗口中弹出一个提示框,显示指定的文本信息。

总之,以上示例代码展示了如何使用C++打开窗口并获取文件路径和文件名。如果你需要打开一个文件选择对话框,可以借鉴以上的示例代码。

  
  

评论区

请求出错了