21xrx.com
2024-09-20 00:52:43 Friday
登录
文章检索 我的文章 写文章
如何用C++打开窗口并获取文件路径和文件名
2023-07-10 05:46:12 深夜i     --     --
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++打开窗口并获取文件路径和文件名。如果你需要打开一个文件选择对话框,可以借鉴以上的示例代码。

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复