GetOpenFileName
是 Windows API 中的一个函数,用于弹出一个文件选择对话框,让用户选择一个或多个文件。这个函数可以获取到文件的完整路径,如果你只想从这个路径中提取文件名,可以通过编程方式来实现。
GetOpenFileName
函数允许用户从文件系统中选择一个或多个文件。函数原型如下:
BOOL GetOpenFileName(
LPOPENFILENAME lpofn
);
其中 lpofn
是一个指向 OPENFILENAME
结构体的指针,该结构体包含了文件选择对话框的各种属性和回调函数。
GetOpenFileName
是一个 Win32 API 函数,属于系统级的文件选择机制。
适用于桌面应用程序,尤其是需要让用户选择文件进行读取或处理的场景。
要从 GetOpenFileName
获取的完整路径中提取文件名,可以使用 C++ 标准库中的 <filesystem>
头文件(C++17 及以上版本)或者使用 Windows API 函数 PathFindFileName
。
<filesystem>
示例代码:#include <iostream>
#include <filesystem>
#include <windows.h>
int main() {
OPENFILENAME ofn;
char fileName[MAX_PATH] = "";
ZeroMemory(&ofn, sizeof(ofn));
ofn.lStructSize = sizeof(ofn);
ofn.hwndOwner = NULL;
ofn.lpstrFilter = "All Files (*.*)\0*.*\0";
ofn.lpstrFile = fileName;
ofn.nMaxFile = MAX_PATH;
ofn.Flags = OFN_EXPLORER | OFN_FILEMUSTEXIST | OFN_HIDEREADONLY;
ofn.lpstrTitle = "Select a File";
if (GetOpenFileName(&ofn)) {
std::filesystem::path filePath(fileName);
std::string fileNameOnly = filePath.filename().string();
std::cout << "Selected file name: " << fileNameOnly << std::endl;
}
return 0;
}
PathFindFileName
示例代码:#include <windows.h>
#include <iostream>
int main() {
OPENFILENAME ofn;
char fileName[MAX_PATH] = "";
ZeroMemory(&ofn, sizeof(ofn));
ofn.lStructSize = sizeof(ofn);
ofn.hwndOwner = NULL;
ofn.lpstrFilter = "All Files (*.*)\0*.*\0";
ofn.lpstrFile = fileName;
ofn.nMaxFile = MAX_PATH;
ofn.Flags = OFN_EXPLORER | OFN_FILEMUSTEXIST | OFN_HIDEREADONLY;
ofn.lpstrTitle = "Select a File";
if (GetOpenFileName(&ofn)) {
char* fileNameOnly = PathFindFileName(fileName);
std::cout << "Selected file name: " << fileNameOnly << std::endl;
}
return 0;
}
通过上述方法,你可以从 GetOpenFileName
获取的完整路径中提取出文件名。
云+社区沙龙online第5期[架构演进]
腾讯云“智能+互联网TechDay”
小程序·云开发官方直播课(数据库方向)
云+社区技术沙龙[第21期]
云+社区技术沙龙[第6期]
Elastic 中国开发者大会
云+社区技术沙龙 [第30期]
腾讯位置服务技术沙龙
云+社区技术沙龙[第10期]
云+社区开发者大会 武汉站
领取专属 10元无门槛券
手把手带您无忧上云