在C++/C中是否有一个函数,通过打开文件资源管理器窗口让用户选择文件来要求用户输入文件?

7tofc5zh  于 2022-11-27  发布在  其他
关注(0)|答案(1)|浏览(91)

正如标题所说,我正在C++/C上寻找一个函数,它将打开一个文件资源管理器窗口,从用户的系统中获取一个文件作为输入。我只通过谷歌搜索system()函数没有找到很多东西,但它并没有真正做我需要它做的事情(或者我不知道如何使用它)。
我只正确地尝试了System()函数,因为这是我发现的全部,所有其他的东西都是关于我不需要的文件名,而且它不是我正在寻找的函数

b1zrtrql

b1zrtrql1#

从评论,我假设你想要的Windows唯一的方法

#include <iostream>
#include <Windows.h>

using namespace std;

string fileDialog(LPCSTR fileType) {
    OPENFILENAMEA ofn;
    char szFile[300];
    ZeroMemory(&ofn, sizeof(ofn));
    ofn.lStructSize = sizeof(ofn);
    ofn.hwndOwner = NULL;
    ofn.lpstrFile = szFile;
    ofn.lpstrFile[0] = '\0';
    ofn.nFilterIndex = 1;
    ofn.nMaxFile = sizeof(szFile);
    ofn.lpstrFilter = fileType;
    ofn.lpstrFileTitle = NULL;
    ofn.nMaxFileTitle = 0;
    ofn.lpstrInitialDir = NULL;
    ofn.Flags = OFN_PATHMUSTEXIST | OFN_FILEMUSTEXIST;
    if (GetOpenFileNameA(&ofn)) {
        return ofn.lpstrFile;
    }
    return "";
}

int main()
{
    cout << fileDialog("Any File\0*") << endl;
    cout << fileDialog("EXE File\0*.exe") << endl;
    cout << fileDialog("MP4 File\0*.mp4") << endl;
    return 0;
}

相关问题