SHBrowseForFolder设置默认文件夹

SHBrowseForFolder打开默认目录Demo C++ 用SHBrowseForFolder 选择目录时,定位到默认的目录,DEMO源代码 立即下载

 

网上找了很多设置默认文件夹得方法,但是大多不尽如人意,最后找到了如下代码(自已也改了一些),发现比较合适,给大家分享下。

 

int   CALLBACK   BrowserCallbackProc  

  (//回调函数  

HWND   hWnd,  

UINT   uMsg,  

LPARAM   lParam,  

LPARAM   lpData  

  )  

  {  

  switch(uMsg)  

  {  

  case   BFFM_INITIALIZED: //设置默认选择的文件夹  

::SendMessage(hWnd,BFFM_SETSELECTION,1,lpData);  

break;  

  default:  

break;  

  }  

  return   0;  

  }  

//strTitle 为对话框标题 strDir为默认路径调用结束后strDir为选择的路径

bool   SelDirectory(HWND hWnd,LPCTSTR strTitle,CString& strDir)  

  {  

  BROWSEINFO bi;  

  char szDisplayName[MAX_PATH]   =   {0};  

  bi.hwndOwner =   hWnd;  

  bi.pidlRoot =   NULL;  

  bi.pszDisplayName =   szDisplayName;  

  bi.lpszTitle =   strTitle;  

  bi.ulFlags   =   BFFM_SETSELECTION; 

  bi.lpfn =   BrowserCallbackProc;  

  bi.lParam =   (LPARAM)(LPCTSTR)strDir;  

  bi.iImage =   NULL;  

 

  //   显示目录选择对话框,如果按了取消,那么piid为NULL  

  ITEMIDLIST*   piid   =   ::SHBrowseForFolder(&bi);  

  if(piid==NULL)  

  {  

return   false;  

  }   

  //   得到选择的目录  

  BOOL   bValidPath = ::SHGetPathFromIDList(piid,szDisplayName);  

  if   (!bValidPath)  

  {  

return   false;  

  }  

  LPMALLOC   lpMalloc;  

  VERIFY(NOERROR==::SHGetMalloc(&lpMalloc));  

  lpMalloc->Free(piid);  

  lpMalloc->Release();  

  if('/0'==szDisplayName[0])  

  {  

return   false; //用户选择的可能的虚拟文件系统  

  }  

  strDir   =   szDisplayName;  

  strDir.TrimRight("//");  

  return   true;  

  }

 

调用代码:

CString path;

path="D://实用软件//VC6MSDN";

SelDirectory   (GetSafeHwnd(),"设置了默认文件夹哦",path);  

基于Landsat-8数据的山西省吕梁市地表温度反演研究过程(大气校正法) 1.数据下载:本实验采用的数据是 ①从地理空间数据云下载的来自landsat8 卫星,云量<=1%,时间为2017年5月12日的山西省吕梁市影像数据。为全面覆盖吕梁市,选用了两片影像。 ②吕梁市边界矢量图 2.数据预处理 ... 阅读详情

相关推荐

STM32+CubeMX实战:5步搞定LWIP HTTP服务器搭建(附常见编译错误解决)

本文详细介绍了基于STM32和CubeMX平台,快速搭建LWIP HTTP服务器的5步实战指南。内容涵盖从项目初始化、LWIP深度配置到解决经典的`HTTPD_FSDATA_FILE`编译错误,并分享了使用VSCode进行高效开发的工作流,旨在帮助嵌入式开发者快速实现网络功能并规避常见陷阱。

weixin_29192365的博客 573

SHBrowseForFolder 打开默认路径

一般的路径方式如下: BROWSEINFO bi; ZeroMemory(&bi,sizeof(BROWSEINFO)); LPMALLOC pMalloc; LPITEMIDLIST pidl = SHBrowseForFolder(&bi); if (pidl==NULL) return; if(pidl != NULL) { TCHAR *

目前打算换一个工作,有招聘windows c++方向的也欢迎联系,北京、济南 最好 1万+

高通ISP模块全解析:从Raw到JPEG的18个关键处理步骤(附避坑指南)

本文全面解析高通ISP模块从Raw到JPEG的18个关键处理步骤,涵盖原始数据预处理、色彩科学处理链、画质增强与降噪等核心环节。通过实战调优经验,揭示ISP架构中的技术原理与工程实践要点,帮助开发者避免常见问题,提升移动影像处理质量。

weixin_30399155的博客 359

为SHBrowseForFolder 设置默认的文件夹

   SHBrowseForFolder是一个windows shell函数,可以以目录为单位进行浏览,其函数原型为:               LPITEMIDLIST SHBrowseForFolder(LPBROWSEINFOlpbi);  参数lpbi是一个指向结构BROWSEINFO的指针,该结构的定义如下:  typedef struct _browseinfo {    H

常海龙的blog 7253

CMake、Make、MinGw、Clang、Llvm、GCC、MSVC的区别

除开 GCC (GNU 编译器集合) 以外,MinGW 还包含有一些其他的 GNU 程序开发工具;的缩写,MinGw是windows版本的gcc集合。并不仅是一个 C/C++ 编译器,而是一套。是微软开发的VC运行时库,3、Make和CMake是。

m0_37698164的博客 1万+

手把手调试Android 14 ShellTransitions:用Log追踪ActiveTransition与Handler匹配过程

本文详细介绍了在Android 14中调试ShellTransitions机制的方法,重点通过Log追踪ActiveTransition与Handler的匹配过程。文章提供了关键日志点植入策略、Handler匹配机制解析及实战调试案例,帮助开发者解决窗口转场动画中的卡顿和错乱问题,提升系统动画性能。

weixin_42652674的博客 429

delphi利用SHBrowseForFolder选择目录

要求:利用Win32 API SHBrowseForFolder开启一个选择文件目录的对话框,预先定位到默认的目录,最后返回所选择的结果,如果没有进行选择(即单击“取消”结束选择)则返回空''。代码如下:(以下两个函数定义需要在uses中引入两个单元ShlObj,Windows;)function BrowseCallbackProc(Wnd: HWND; uMsg: UINT; lParam, ...

straw hat in the wind 340

LLM大模型基础知识【一】

大语言模型(LLM):是指在自然语言处理(Natural Language Processing,NLP)领域中的一类大模型,通常用于处理文本数据和理解自然语言。这类大模型的主要特点是它们在大规模语料库上进行了训练,以学习自然语言的各种语法、语义和语境规则。例如:GPT系列(OpenAI)、Bard(Google)、文心一言(百度)。视觉大模型:是指在计算机视觉(Computer Vision,CV)领域中使用的大模型,通常用于图像处理和分析。

lin_xi_xi的博客 2878

SHBrowseForFolder如何改变弹出窗口的大小

使用了SHBrowseForFolder来选择文件夹,但是发现弹出的默认选择文件夹窗口太小,网上找了很长时间没有相应改变大小的方法,请问怎么才能改变其大小呢?

yingduanru9647的博客 750

IDEA 导入 jbolt项目(实验室非公开项目)

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录准备一、准备数据库二、IDEA导入jbolt项目 准备 在实验室群文件中下载jbolt.zip和mysql.sql两个文件 将其解压到自己的目录下 一、准备数据库 打开Navicat新建一个jbolt数据库(字符集为utf8) 导入mysql.sql文件 数据库导入完毕 二、IDEA导入jbolt项目 点击打开一个项目 选择jbolt文件夹 以Maven形式打开 打开pom.xml 在里面添加jetty-server依赖

weixin_44094842的博客 974

SAP SmartForms字体 :从OTF缓存溢出到完美解决

精准诊断:遇到错误,首先区分是图片过大还是字体嵌入导致。删除图片测试是最快的判别方法。字体上传规范始终从SE73入口上传用于表单打印的字体。强烈建议应用SAP Note 1301018,确保上传时勾选“不替换其他字体”,避免系统自动替换引发的意外问题。如需为同一字体族上传粗体、斜体等变体,请在SE73初始屏幕上勾选对应的属性框(如BOLD),然后分别上传对应的字体文件(如上传过程中,系统会提示输入RTF控制序列信息,这是确保打印预览正常显示的关键步骤,必须正确填写。方案选型快速止血:采用方案一(

Pegasus666的博客 294

API函数SHBrowseForFolder用法

这里主要介绍使用SHBrowseForFolder时,如何设置默认路径。还没找到更好的方法,使用的是回调函数//--------------------------------------------------------------------------------------------------------------------------------//在此函数里设置默认路径,这里取的是应用程序的路径int CALLBACK BrowseCallbackProc(HWND hwnd, UIN

minigift的专栏 772

HBase在物流行业的应用:轨迹数据存储

想象一下,每天在全球范围内,数以亿计的物流包裹在各个城市、乡镇间穿梭。每一个包裹从发货人手中出发,经过仓储中心、转运站,最终到达收货人手中,这一路上都留下了它的“足迹”,也就是我们所说的轨迹数据。这些数据就像一个个拼图碎片,完整拼接起来后,能够清晰地呈现出整个物流网络的运行状况。例如,你在网上购买了一件心仪已久的商品,迫不及待地想知道它现在到哪儿了。物流平台实时更新的轨迹信息,让你可以准确了解包裹是在运输途中,还是已经到达附近的站点。

架构师的AI之路,分享AI应用开发架构的学习与实践。 965

SHBrowseForFolder如何设定初始目录

char gszRootDir[MAX_PATH] ; int CALLBACK BrowseCallbackProc(HWND hwnd, UINT msg, LPARAM lp, LPARAM Data) { if (msg == BFFM_INITIALIZED ) { ::SendMessage(hwnd,BFFM_SETSEL

leeeryan 1972

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

Delphi 打开文件夹方法

第一种方法,使用SelectDirectory 函数 ,在ShellApi中procedure TForm2.BtSelectPathClick(Sender: TObject);var    strCaption,strDirectory:String;    wstrRoot:WideString;    begin    strCaption:=这是浏览文件夹的说明文字,可以根据需要进

自由时间 7440

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

关于VC弹出选择文件夹对话框

转自:http://blog.youkuaiyun.com/wangyao1052/article/details/6652077 VC编程中经常需要弹出选择文件夹对话框供用户选择目标文件夹 基本实现的源码如下 [cpp] view plaincopy void CTestDlg::OnBtnTest()    {       /

patdz的专栏 2790

使用BROWSEINFO 设置浏览文件夹的属性

大家都知道,使用BROWSEINFO bi结构体和SHBrowseForFolder可以弹出浏览文件夹,通过BROWSEINFO来设置浏览文件夹的属性。下面我就来简单谈一些我在调用的时候遇到的问题和使用的方法。下面是BROWSEINFO 参数的含义: typedef struct _browseinfo {  HWND hwndOwner; // 父窗口句柄  LPCITEMIDLIST p

爱生活,不爱Bug 7764

mfc中打开文件夹

////////////////////////////////////////////////////////////////////////////.hclass CBrowseDirDialog {  public:      CBrowseDirDialog();      virtual ~CBrowseDirDialog();      int DoBrowse();     CStr

cleanfield的专栏 3205

基于C/C++的实现文件夹选择对话框

int CALLBACK BrowseCallbackProc(HWND hwnd, UINT uMsg, LPARAM lParam, LPARAM lpData) { CHAR szDesktop[MAX_PATH]; getDesktoppath(szDesktop); // 设置默认的打开路径 if (uMsg == BFFM_INITIALIZED) { SendMessage(hwnd, BFFM_SETSELECTION, (WPARAM)TRUE,(LPARAM)szDesk.

无奋斗、无青春! 2742

一个MFC风格的BrowseForFolder 封装类

原文链接:CYABFFW: Yet Another BrowseForFolder Wrapper 以良好的MFC风格将Shell API函数SHBrowseForFolder()封装为一个CWnd子类。 使用示例1: CYABFFWdlg();if(IDOK==dlg.DoModal()){CStrings=dlg.GetPath();//Dosomethingwith`s' ...

dato0123 243

MFC记住上次路径---遇到的一些问题

遇到的问题真不少,记录一下好多细节,真是不写不知道。 2016-08-1821:35:36补充: MFC选择文件夹的对话框 VC++------------MFC选择文件夹和文件对话框 1.基本方法 http://blog.youkuaiyun.com/shuilan0...

419
上一篇: Rational Rose 2003 逆向工程转换C++ / VC++ 6.0源代码成UML类图(转载)
下一篇: 安装和管理MySql数据库(MySql数据库初探一)
BlueMap
博客等级 码龄17年 114粉丝 22原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值