2 szhandrew szhandrew 于 2018.07.12 06:52 提问

请教如何用C++,弹出选择文件窗口,并在控制台打印已选文件路径

如题,现在使用VC2017,听说可以使用OpenFileDialog,刚入门小白,请问具体需要怎么用,感谢各位大神

4个回答

caozhy
caozhy   Ds   Rxr 2018.07.12 07:29
已采纳

这是原生C++的做法:

// Q694481_Win32.cpp : Defines the entry point for the console application.
//

#include "stdafx.h"

#include <windows.h>
#include <Commdlg.h>
#include <stdio.h>

OPENFILENAME ofn;
char szFile[300];

int main()
{
    ZeroMemory(&ofn, sizeof(ofn));
    ofn.lStructSize = sizeof(ofn);
    ofn.hwndOwner = NULL;
    ofn.lpstrFile = (LPWSTR)szFile;
    ofn.lpstrFile[0] = '\0';
    ofn.nMaxFile = sizeof(szFile);
    ofn.lpstrFilter = L"All\0*.*\0Text\0*.TXT\0";
    ofn.nFilterIndex = 1;
    ofn.lpstrFileTitle = NULL;
    ofn.nMaxFileTitle = 0;
    ofn.lpstrInitialDir = NULL;
    ofn.Flags = OFN_PATHMUSTEXIST | OFN_FILEMUSTEXIST;
    if (GetOpenFileName(&ofn))
    {
        wprintf(L"%s\n", ofn.lpstrFile);
    }
    else
    {
        printf("user cancelled\n");
    }
    return 0;
}

caozhy
caozhy   Ds   Rxr 2018.07.12 07:15

OpenFileDialog是.net的库,你必须创建一个C++ CLR的程序

 // Q694481.cpp : main project file.

#include "stdafx.h"

using namespace System;
using namespace System::Windows::Forms;

[STAThreadAttribute]
int main(array<System::String ^> ^args)
{
    OpenFileDialog^ openFileDialog = gcnew OpenFileDialog;
    if (openFileDialog->ShowDialog() == System::Windows::Forms::DialogResult::OK)
    {
        Console::WriteLine(openFileDialog->FileName);
    }
    Console::ReadLine();
}

caozhy
caozhy   Ds   Rxr 2018.07.12 07:16

图片说明

caozhy
caozhy   Ds   Rxr 2018.07.12 07:30

图片说明

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
c++ 控制台弹出文件管理对话框
// ConsoleApplication4.cpp : 定义控制台应用程序的入口点。 // #include "stdafx.h" #include #include using namespace std; int _tmain(int argc, _TCHAR* argv[]) { TCHAR szBuffer[MAX_PATH] = {0
C语言调用windows窗口,得到文件夹目录
c++,获取路径
C++弹出框获取文件路径
方式1: void GetPath() { wchar_t *szDefaultDir = L"C:\\WINDOWS\\"; wchar_t szPath[MAX_PATH] = {0}; std::wstring strSelDir = L""; BROWSEINFO brInfo; ITEMIDLIST *pItem; brInfo.hwndOwner = m_pDlg
VC点击按键弹出文件路径选择对话框
void CServerDlg::OnBnClickedButtonSavePath() { CString str; BROWSEINFO bi; ZeroMemory(&bi, sizeof(BROWSEINFO));     //作用为给所有参数都设为0,即NULL bi.hwndOwner = GetSafeHwnd();   //bi.hwndOwner = m
VBA 弹框选择文件路径
弹框选择文件路径
如何弹出一个选择文件夹路径的对话框选择路径?
Private Declare Function SHBrowseForFolder _        Lib "shell32.dll" Alias "SHBrowseForFolderA" _        (lpBrowseInfo As BROWSEINFO) As LongPrivate Declare Function SHGetPathFromIDList _        Lib
一分钟了解“matlab实现用对话框手选的方式打开文件”
[filename, pathname] = uigetfile( ...     {'*.jpg;*.bmp;*.png;*.gif','All Image Files';...     '*.*','All Files' },...     '请选择背景的图片', ...     'MultiSelect', 'off');  backgroundImage=imread( [pat
MFC选择文件并在编辑框中显示文件路径
http://blog.csdn.net/cecilia214/article/details/5345915 1.在对话框上添加了一个按钮,并添加其单击的响应程序如下: [cpp] view plaincopyprint? void COpenFileDlg::OnBnClickedFileOpen1()  {      // TODO: 在此添加控件通知处理程序
QT 打开文件选择窗口
1. #define SYSTEM_DIR_LB_FILE                0x0B000000       //录波目录 QString filepath_dat=QFileDialog::getOpenFileName(this,tr("Open Image"),DirMgr::GetSysDirAllEn_Name(SYSTEM_DIR_LB_FILE), tr("d
控制台程序使用打开文件对话框
#include #include #include #include using namespace std;/*控制台打开文件对话框,VC6.01.新建一个空的控制台程序2.Project->Setting->C/C++ ->catagory(code generation)-> using run-time library -> multithread3.