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
C# Window编程随记——按钮点击事件及弹出选择路径框
C# Window编程随记——按钮点击事件及弹出选择路径框 按钮点击事件 弹出选择路径框 获取窗内组件,并对其属性进行修改 1.按钮点击事件在可视化的UI界面中,选择指定的按钮组件,然后双击该组件: 如下图,双击按钮之后跳转到编辑界面对应的C#脚本中,会自动生成一个按钮点击时的监听方法,当按钮监听到点击事件时,会自动调用此方法,按钮点击后的处理可以写在此方法中: 2.弹出选择路径框正如UI上
MFC选择文件并在编辑框中显示文件路径
http://blog.csdn.net/cecilia214/article/details/5345915 1.在对话框上添加了一个按钮,并添加其单击的响应程序如下: [cpp] view plaincopyprint? void COpenFileDlg::OnBnClickedFileOpen1()  {      // TODO: 在此添加控件通知处理程序
Unity3d打开文件选择对话框
如何在unity3d中选择本地文件呢,网上有介绍使用OpenFileDialog的方法来调用windows的文件选择对话框,但是要弹出windows窗口,这对于在全屏模式下选择文件来说界面就有些不太友好了。为了使用unity3中元素显示文件选择对话框,本人封装了一个dll文件可嵌入unit3d用于文件选择,界面还可以自己修改。 效果如图:,左边就是一个文件选择窗口,可以选择指定类型的文件,组件还
如何直接弹出路径为当前文件夹的DOS命令窗口
<br /><br />  把下面代码另存为1.reg,然后双击运行。以后你就可以:在文件夹上点击右键,选择"CMD...",直接弹出路径为当前文件夹的DOS命令窗口。对付“C:/Program Files”这样的目录或者很深的目录很管用,省去很多打字的时间。<br />REGEDIT4<br />[HKEY_CLASSES_ROOT/Directory/shell/cmd]<br />@="CMD..."<br />[HKEY_CLASSES_ROOT/Directory/shell/cmd/comman
选择用户-显示已选用户
1介绍 选择用户是一个比较常用的功能,主要包含2个功能点(保存已选选项、显示已选用户) 功能要求: 1 选择用户界面以弹出框方式显示 2 页面选项动态加载(部门及用户) 3 已选用户以勾选方式显示 实现分析: 首先因为窗口是个弹出框,所以页面的内容主要是以异步方式获取。因为内容分为两个部分(1待选项、2选中项)所以就有两种处理方法. 方法1:
如何弹出一个选择文件夹路径的对话框选择路径?
Private Declare Function SHBrowseForFolder _        Lib "shell32.dll" Alias "SHBrowseForFolderA" _        (lpBrowseInfo As BROWSEINFO) As LongPrivate Declare Function SHGetPathFromIDList _        Lib
C++打开(弹出)指定路径文件夹
有时候我们需要利用代码将指定路径(folderpath)的文件夹打开(效果相当于我们双击了此文件夹),为了方便初次遇到这个问题的朋友,以下我罗列了几种可用的方法:          方法一:System("start     folderpath");          方法二:System("explorer.exe     folderpath");          方法三:Shell