MFC如何实现文件夹选择对话框?

MFC如何实现文件夹选择对话框?,第1张

今天写一个程序,其中一个功能是用对话框来选择一个文件夹路径。可是以前常用的CFileDialog必须指定到文件,选择一个文件夹只能继续打开而不能返回这个路径,CFileDialog貌视也没有参数可以弄成选择文件夹的式样。上网找了找,CSDN里有人提供下面这个函数的用法:

CString

ShowSelectDirectoryDlg(const

CString

&

strDlgTitle)

{

char

szDir[MAX_PATH]

BROWSEINFO

bi

ITEMIDLIST

*pidl

bi.hwndOwner

=

this->m_hWnd

bi.pidlRoot

=

NULL

bi.pszDisplayName

=

szDir

bi.lpszTitle

=

strDlgTitle

bi.ulFlags

=

BIF_RETURNONLYFSDIRS

bi.lpfn

=

NULL

bi.lParam

=

0

bi.iImage

=

0

pidl

=

SHBrowseForFolder(&bi)

if(pidl

==

NULL)

return

_T()

if(!SHGetPathFromIDList(pidl,

szDir))

return

_T()

这个函数的传入参数strDlgTitle,就是选择文件夹对话框的标题栏名称。只需要模拟这个函数的写法,添加代码到特定的消息响应函数里去就可以了。

如果是选择文件的话那么正如wwwgmc所写的那样。

但是如果提问者说的是路径选择对话框则应是如下代码(代码中采用控制台的形式给出SHBrowseForFolder()的用法):

#include <stdio.h>

#include <Windows.h>

#include <shlobj.h>

int main()

{

BROWSEINFO stInfo = {NULL}

LPCITEMIDLIST pIdlst

TCHAR szPath[MAX_PATH]

stInfo.ulFlags = BIF_DONTGOBELOWDOMAIN | BIF_RETURNONLYFSDIRS | BIF_USENEWUI

stInfo.lpszTitle= "请选择路径:"

pIdlst = SHBrowseForFolder(&stInfo)

if(!pIdlst) return 1

if(!SHGetPathFromIDList(pIdlst, szPath)) return 1

printf(szPath)

return 0

}

1、打开软件。

2、新建工程,名字“canshuchuandi”。制作界面如图。编辑框变量设置为“m_a1”。

3、在资源视图,右键插入类“Cshow”制作界面,变量设置为“m_a2”。

4、双击原界面的“打开并传输”按钮,编辑事件处理程序如图。

5、双击新建的界面的“返回第一个对话框+6”按钮,编辑事件处理程序如图。

6、退出就完成了,点击按钮就可以d出新窗口了。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/tougao/11447191.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-16
下一篇 2023-05-16

发表评论

登录后才能评论

评论列表(0条)

保存