C++ 打开选择文件夹对话框选择目录的操作

需要添加头文件:

#ifdef WIN32
#include <shlobj.h>
#endif

调用文件对话框选择目录:

// 选择目录
void CustomInstalWndViewCtrl::OnSigBtnSelectInstallDir()
{
 BROWSEINFO bi;
 bi.hwndOwner = NULL;
 bi.pidlRoot = CSIDL_DESKTOP;//文件夹的根目录,此处为桌面
 bi.pszDisplayName = NULL;
 bi.lpszTitle = NULL;//显示位于对话框左上部的提示信息
 bi.ulFlags = BIF_DONTGOBELOWDOMAIN | BIF_RETURNONLYFSDIRS | BIF_NEWDIALOGSTYLE;//有新建文件夹按钮
 bi.lpfn = NULL;
 bi.iImage = 0;
 LPITEMIDLIST pidl = SHBrowseForFolder(&bi);//调用选择对话框
 if (pidl == NULL)
 {
 std::cout << "没有选择目录" << std::endl;
 return;
 }
 TCHAR strFolder[MAX_PATH];
 SHGetPathFromIDList(pidl, strFolder);
 std::string sFolder = StringUtil::WStringToString(strFolder);
}

补充:c++ MFC选择文件夹

void openDir(){
 //选择文件夹
 string _Path,root;
 TCHAR szDir[MAX_PATH];
 BROWSEINFO bi;
 ITEMIDLIST *pidl;
 bi.hwndOwner = this->m_hWnd;
 bi.pidlRoot = NULL;
 bi.pszDisplayName = szDir;//这个是输出缓冲区
 bi.lpszTitle = _T("文件夹:"); //标题
 bi.ulFlags = BIF_NEWDIALOGSTYLE;//使用新的界面,在win7中效果较好//BIF_RETURNONLYFSDIRS;
 bi.lpfn = NULL;
 bi.lParam = 0;
 bi.iImage = 0;
 pidl = SHBrowseForFolder(&bi);//弹出对话框
 if (pidl == NULL)//点了取消,或者选择了无效的文件夹则返回NULL
 return;

 if (SHGetPathFromIDList(pidl, szDir)) {
 int length = WideCharToMultiByte(CP_ACP, 0, szDir, -1, NULL, 0, NULL, NULL);
 char ch[] = "";
 WideCharToMultiByte(CP_ACP, 0, szDir, -1, ch, length, NULL, NULL);
 root = string(ch);
 }
}

以上为个人经验,希望能给大家一个参考,也希望大家多多支持我们。如有错误或未考虑完全的地方,望不吝赐教。

时间: 2021-01-10

C++基于对话框的程序的框架实例

本文实例讲述了C++基于对话框的程序的框架.分享给大家供大家参考.具体如下: resource.cpp源文件如下: 复制代码 代码如下: #include "resource.h"    CMyApp theApp;    BOOL CMyApp::InitInstance()  {      CMainDialog dlg;      m_pMainWnd = &dlg;   //给m_pMainWnd 主窗口      dlg.DoModal();      return

C++采用openfilename打开文件对话框用法实例

本文实例讲述了C++采用openfilename打开文件对话框用法,分享给大家供大家参考.具体方法如下: 这里需要注意,有的时候会因为没设置nMaxFile,而一直不出现对话框. 具体功能代码如下: 复制代码 代码如下: char szFileName[MAX_PATH]={0};  OPENFILENAME openFileName = {0};  openFileName.lStructSize = sizeof(OPENFILENAME);  openFileName.nMaxFile =

C++ 打开选择文件夹对话框选择目录的操作

需要添加头文件: #ifdef WIN32 #include <shlobj.h> #endif 调用文件对话框选择目录: // 选择目录 void CustomInstalWndViewCtrl::OnSigBtnSelectInstallDir() { BROWSEINFO bi; bi.hwndOwner = NULL; bi.pidlRoot = CSIDL_DESKTOP;//文件夹的根目录,此处为桌面 bi.pszDisplayName = NULL; bi.lpszTitle =

C++ 控制台弹出文件管理对话框案例

在控制台程序中打开文件管理对话框,效果图如下所示: 在需要弹出对话框的地方插入以下代码: //打开文件管理窗口 TCHAR szBuffer[MAX_PATH] = { 0 }; OPENFILENAME file = { 0 }; file.hwndOwner = NULL; file.lStructSize = sizeof(file); file.lpstrFilter = _T("Excel文件(*.xlsx,*.xls)\0*.xlsx;*.xls\0Txt文件(*.txt)\0*.t

JS实现弹出下载对话框及常见文件类型的下载

1.写在前面 JS要实现下载功能,一般都是这么几个过程:生成下载的URL,动态创建一个A标签,并将其href指向生成的URL,然后触发A标签的单击事件,这样就会弹出下载对话框,从而实现了一个下载的功能. 这里所说的下载,有时候也可以理解为保存.出于安全考虑,JS肯定无法直接调用FileAPI写文件到磁盘,但是却可以通过下载来变相实现保存功能. 2.几个备用知识点 2.1. JS触发单击事件 既然是用A标签模拟,那么肯定要知道JS如何主动触发单击事件. 最简单的触发单击事件肯定是elem.clic

利用BootStrap弹出二级对话框的简单实现方法

弹出二级对话框,即在对话框的基础上再弹出一个对话框.这对于CRM管理类系统来说应用场景很常见.看到网上有关于实现二级弹出框的方法,需要在一级对话框页面上添加不少css样式.其实,完全可以不用这么麻烦. 利用bootstrap实现二级对话框很简单,只需要在主页面上添加两个含有class="modal"的DIV标签.如下面代码: <!DOCTYPE html> <html> <head> <title></title> <m

C#实现在前端网页弹出警告对话框(alert)的方法

本文实例讲述了C#实现在前端网页弹出警告对话框(alert)的方法.分享给大家供大家参考.具体如下: 通常我们通过JS生成警告对话框,下面的代码可以帮助你在点击runat=server的按钮时从服务器端生成alert警告对话框 private void MessaegBox(String msg) { Page.Controls.Add(new LiteralControl("window.alert('"+msg+"')")); } protected void

Android仿QQ消息提示实现弹出式对话框

本文在<7种形式的Android Dialog使用实例>在这篇文章的基础进行学习,具体内容如下 1.概述 android原生控件向来以丑著称(新推出的Material Design当另说),因此几乎所有的应用都会特殊定制自己的UI样式.而其中弹出式提示框的定制尤为常见,本篇我们将从模仿QQ退出提示框来看一下常见的几种自定义提示框的实现方式. 这里使用的几种弹出框实现方法概括为以下几种: 自定义Dialog 自定义PopupWindow 自定义Layout View Activity的Dialo

jQuery实现时尚漂亮的弹出式对话框实例

本文实例讲述了jQuery实现时尚漂亮的弹出式对话框.分享给大家供大家参考.具体如下: 这是一款十分简洁漂亮的HTML5弹出对话框效果,基于jQuery来实现,引入了jquery1.6.2库. 本效果描述:用鼠标点击一下右上角的小图标,会弹出一个层对话框,里面可以提交留言.评论之类的. 运行效果截图如下: 具体代码如下: <!DOCTYPE html> <head> <meta http-equiv="Content-Type" content="

JQuery弹出炫丽对话框的同时让背景变灰色

这段时间在做开发时,用到了JQuery弹出炫丽对话框,背景变灰色.特地和大家分享分享. 先看效果图:  代码如下: 复制代码 代码如下: <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <script src=&q

Android实现底部弹出的对话框功能

环境: 主机:WIN10 开发环境:Android Studio 2.2 Preview 3 说明: 两种方法实现底部弹出的对话框: Dialog DialogFragment 推荐用DialogFragment 效果图: 布局文件dialog_select_call.xml: <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schema

Django使用消息提示简单的弹出个对话框实例

1.下面就来介绍一下如何简单的显示一个消息提示,好像js可以控制,不过这里用了django.contrib.messages这个库 2.首先呢,在项目的settings.py有默认配置一个django.contrib.messages的相关信息: INSTALLED_APPS = [ 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'd

PyQt弹出式对话框的常用方法及标准按钮类型

PyQt之弹出式对话框(QMessageBox)的常用方法及标准按钮类型 一.控件说明 QMessageBox是一种通用的弹出式对话框,用于显示消息,允许用户通过单击不同的标准按钮对消息进行反馈,且每个标准按钮都有一个预定义的文本.角色和十六进制数. QNessageBox类提供了如:提示.警告.错误.问询.关于等对话框(这些不同类型的对话框只是显示的图标不同其他功能均一致) 二.QMessageBox类中的常用方法 infomation(QWidget parent,title text,bu

JavaScript写的一个自定义弹出式对话框代码

下图是我的设计思路 下面是具体的js代码 1,首先定义几个自定义函数 代码 复制代码 代码如下: //判断是否为数组 function isArray(v) { return v && typeof v.length == 'number' && typeof v.splice == 'function'; } //创建元素 function createEle(tagName) { return document.createElement(tagName); } //在