-
VC实现在浏览目录对话框中选择目录
2007-09-02 19:45:00使用MFC中的CFileDialog类,我们可以很方便的在目录对话框中选择打开或保存文件,但是有时我们需要的是在其中选择一个文件夹,这在MFC中并没有提供.这里提供一个简单的类来实现这个要求,是我在别人的程序代码中找到的....使用MFC中的CFileDialog类,我们可以很方便的在目录对话框中选择打开或保存文件,但是有时我们需要的是在其中选择一个文件夹,这在MFC中并没有提供.这里提供一个简单的类来实现这个要求,是我在别人的程序代码中找到的.这个类是CDirDlg.
CDirDlg类的头文件DIR.H
#if!defined _THIS_IS_MY_DIRECTORY_SELECT_CLASS_
#define _THIS_IS_MY_DIRECTORY_SELECT_CLASS_
class CDirDlg
{
public:
CDirDlg();
virtual ~CDirDlg();
CString GetDirectory(CWnd *pParent=NULL,LPCSTR lpszRoot="c://",LPCSTR lpszTitle="Please Pick a Directory";
static CString m_sRootDir;
};
int CALLBACK BrowseCallbackProc(HWND hwnd,UINT uMsg,LPARAM lp, LPARAM pData);
#endif
源文件DIR.CPP
#include "stdafx.h"
#include "dir.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/
CString CDirDlg::m_sRootDir;
//
// Construction/Destruction
//
CDirDlg::CDirDlg()
{
}
CDirDlg::~CDirDlg()
{
}
CString CDirDlg::GetDirectory(CWnd *pParent,LPCSTR lpszRoot,LPCSTR lpszTitle)
{
CString str;
BROWSEINFO bi;
bi.hwndOwner=pParent->m_hWnd; //owner of created dialog box
bi.pidlRoot=0; //unused
bi.pszDisplayName=0; //buffer to receive name displayed by folder (not a valid path)
bi.lpszTitle=lpszTitle; //title is "Browse for Folder", this is an instruction
bi.lpfn = BrowseCallbackProc; //callback routine called when dialog has been initialized
bi.lParam=0; //passed to callback routine
bi.ulFlags=
BIF_RETURNONLYFSDIRS | //only allow user to select a directory
BIF_STATUSTEXT | //create status text field we will be writing to in callback
// BIF_BROWSEFORCOMPUTER| //only allow user to select a computer
// BIF_BROWSEFORPRINTER | //only allow user to select a printer
// BIF_BROWSEINCLUDEFILES| //displays files too which user can pick
// BIF_DONTGOBELOWDOMAIN| //when user is exploring the "Entire Network" they
// are not allowed into any domain
0;
m_sRootDir=lpszRoot;
LPITEMIDLIST lpItemId=::SHBrowseForFolder(&bi);
if (lpItemId)
{
LPTSTR szBuf=str.GetBuffer(MAX_PATH);
::SHGetPathFromIDList(lpItemId, szBuf);
::GlobalFree(lpItemId);
str.ReleaseBuffer();
}
return str;
}
int CALLBACK BrowseCallbackProc(HWND hwnd,UINT msg,LPARAM lp, LPARAM pData)
{
TCHAR buf[MAX_PATH];
switch(msg)
{
// when dialog is first initialized, change directory to one chosen above
case BFFM_INITIALIZED:
strcpy(buf,CDirDlg::m_sRootDir);
::SendMessage(hwnd,BFFM_SETSELECTION,TRUE,(LPARAM)buf);
break;
// if you picked BIF_STATUSTEXT above, you can fill status here
case BFFM_SELCHANGED:
if (::SHGetPathFromIDList((LPITEMIDLIST) lp ,buf))
SendMessage(hwnd,BFFM_SETSTATUSTEXT,0,(LPARAM)buf);
break;
}
return 0;
}
使用方法:在你的工程中添加这两个文件进去,然后会在类视图中出现在CDirDlg类,该类中只有一个方法GetDirectory(),可以像下面这样用:
CDirDlg dlg;
m_strPath=dlg.GetDirectory(this,"我的电脑";
-
VC设置保存文件夹路径
2011-06-30 11:26:00CString strPath; BROWSEINFO bi ={0}; char pszDisplayName[MAX_PATH] ="/0"; bi.hwndOwner=NULL; bi.pszDisplayName = pszDisplayName; bi.lpszTitle="请选择目录:"; bi.ulFlags=BIFCString strPath;
BROWSEINFO bi ={0};
char pszDisplayName[MAX_PATH] ="/0";
bi.hwndOwner=NULL;
bi.pszDisplayName = pszDisplayName;
bi.lpszTitle="请选择目录:";
bi.ulFlags=BIF_RETURNONLYFSDIRS;
LPITEMIDLIST lpIL = SHBrowseForFolder(&bi);
if(lpIL)
{
SHGetPathFromIDList(lpIL,bi.pszDisplayName);
}
else
{
strPath=_T("");//return _T("");
}
filePath =bi.pszDisplayName;不会的,忘记的可以直接粘贴过去,可用。
-
MFC中弹出文件保存目录或文件选择框
2013-12-30 21:24:31环境:vc6.0开发环境: //弹出保存文件对话框: void OnXXXBrowse() { CString strFolderPath; BROWSEINFO broInfo = {0}; TCHAR szDisName[MAX_PATH] = {0}; broInfo.hwndOwner = this环境:vc6.0开发环境:
//弹出保存文件对话框:
void OnBrowseSaveFile()
{
CString strFolderPath;
BROWSEINFO broInfo = {0};
TCHAR szDisName[MAX_PATH] = {0};
broInfo.hwndOwner = this->m_hWnd;
broInfo.pidlRoot = NULL;
broInfo.pszDisplayName = szDisName;
broInfo.lpszTitle = _T("选择保存路径");
broInfo.ulFlags = BIF_NEWDIALOGSTYLE | BIF_DONTGOBELOWDOMAIN
| BIF_BROWSEFORCOMPUTER | BIF_RETURNONLYFSDIRS | BIF_RETURNFSANCESTORS;
broInfo.lpfn = NULL;
broInfo.lParam = NULL;
broInfo.iImage = IDR_MAINFRAME;
LPITEMIDLIST pIDList = SHBrowseForFolder(&broInfo);
if (pIDList != NULL)
{
memset(szDisName, 0, sizeof(szDisName));
SHGetPathFromIDList(pIDList, szDisName);
strFolderPath = szDisName;
}
}//浏览文件
void OnOpenFile()
{
LPCTSTR szFilter = _T("All Files (*.*)|*.*;|(*.cpp)|*.cpp;|(*.h)|*.h||");
// CFileDialog的第一个参数标明是浏览还是保存
CFileDialog dlg(TRUE, NULL, NULL, OFN_FILEMUSTEXIST | OFN_HIDEREADONLY, szFilter);
if (dlg.DoModal() == IDOK)
{
CString fileName = dlg.GetPathName(); //文件路径信息
}}
//获取exe运行的所在路径
void GetCurPath()
{
CString strCurPath; // 不包含文件名的全路径
GetModuleFileName(NULL, strCurPath.GetBufferSetLength(MAX_PATH + 1), MAX_PATH);
strCurPath.ReleaseBuffer();
int nPos = strCurPath.ReverseFind('\\');
strCurPath = strCurPath.Left(nPos + 1);
}好了,今天就介绍到这里,希望读者不懂的地方可以联系我,或者哪里写错了也一定要指出告诉我,呵呵 新浪邮箱:chao_song2011@sina.cn
-
vc 打开目录对话框
2010-09-19 15:35:00首先创建如下的对话框,并为它创建类Dialog,在Dialog头文件中添加保存目录名的变量CString m_strPath,然后为编辑框右边的按钮添加消息响应函数OnButtonBrowser(),并添加如下代码。 ...在实际的MFC编程当中,常常需要弹出对话框选择文件、选择目录等操作,对于选择文件,用CFileDialog就可以很简单的解决,而对于选择目录,则稍稍需要多一些步骤,需要自己创建Dialog。
首先创建如下的对话框,并为它创建类Dialog,在Dialog头文件中添加保存目录名的变量CString m_strPath,然后为编辑框右边的按钮添加消息响应函数OnButtonBrowser(),并添加如下代码。
void CDialog::OnButtonBrowser()
{
// TODO: Add your control notification handler code here
UpdateData(TRUE);
char szDir[MAX_PATH];
BROWSEINFO bi;
ITEMIDLIST *pidl;
bi.hwndOwner = this->m_hWnd;
bi.pidlRoot = NULL;
bi.pszDisplayName = szDir;
bi.lpszTitle = "请选择目录";
bi.ulFlags = BIF_STATUSTEXT | BIF_USENEWUI | BIF_RETURNONLYFSDIRS;
bi.lpfn = NULL;
bi.lParam = 0;
bi.iImage = 0;
pidl = SHBrowseForFolder(&bi);
if(pidl == NULL) return;
if(!SHGetPathFromIDList(pidl, szDir)) return;
else m_strPath = szDir;
UpdateData(FALSE);
}
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/jiangxinyu/archive/2010/03/01/5335608.aspx
-
VC 提取指定文件夹目录到INI文件中.rar
2019-07-10 11:39:45VC 提取指定文件夹目录到INI文件中,可执行对应的操作:选择文件夹、提取目录等,将信息保存在INI文件中,一个操作INI文件的简单例子,期待VC 新手学习参考。 -
VC将WORD保存为BMP
2013-01-30 08:47:15ClassWizeard->AddClass->From TypeLibrary 选择OFFICE安装目录下的msword.olb 导入_Application,_Document,Documents,Paragraphs,Range 第一步将WORD内容复制到剪贴板 BOOL CWordToJPG::CopyWordToClipboard... -
VC弹出"选择文件"和"选择文件夹"对话框(转)
2019-09-22 02:29:051、选择文件夹 在实际的MFC编程当中,常常需要弹出对话框选择文件... 首先创建如下的对话框,并为它创建类Dialog,在Dialog头文件中添加保存目录名的变量CString m_strPath,然后为编辑框右边的按钮添加消息响应函... -
VC弹出"选择文件"和"选择文件夹"对话框(转)
2009-09-27 12:56:00VC弹出"选择文件"和"选择文件夹"对话框(转) 1、选择文件夹 在实际的MFC编程当中,常常需要弹出对话框选择文件、... 首先创建如下的对话框,并为它创建类Dialog,在Dialog头文件中添加保存目录名的变量CString m_strP -
vc
2019-04-14 10:57:30Hello World! 基本步骤: 1)启动VC++ “开始”->“程序”->“Microsoft Visual Studio 6.0...“新建”,单击“文件”选项卡,选择“C++Source Files”,修改文件保存“目录”和“文件”(文件名),单击“确... -
VC弹出“选择文件夹”对话框的程序的编写
2010-03-01 13:48:00在实际的MFC编程当中,常常需要弹出对话框...首先创建如下的对话框,并为它创建类Dialog,在Dialog头文件中添加保存目录名的变量CString m_strPath,然后为编辑框右边的按钮添加消息响应函数OnButtonBrowser(),并添加 -
VC弹出“选择文件夹”对话框的程序的编写(ZZ)
2010-07-27 16:04:00首先创建如下的对话框,并为它创建类Dialog,在Dialog头文件中添加保存目录名的变量CString m_strPath,然后为编辑框右边的按钮添加消息响应函数OnButtonBrowser(),并添加如下代码。 void ... -
【VC编程技巧】文件☞2.7Windows上[浏览][打开][保存]对话框
2013-12-16 21:45:42windows程序开发中,如过涉及界面的部分 ,对于浏览对话框、...场合:可以用来设置路径,选择目录。 代码: void CBrowseFolderDlg::OnBrowse() { // TODO: Add your control notification handler code here BROW -
保存文件路径的选择
2009-11-12 16:04:001. BROWSEINFO Visual C++(VC)中,BROWSEINFO结构中包含有用户选中目录的重要信息。 (1)BROWSEINFO结构 ●定义 typedef struct_browseinfo { HWND hwndOwner; LPCITEMIDLIST pidlRoot; LPSTR ... -
VC6LineNumberAddin。
2017-03-26 14:29:221、如果你的VC6.0安装在C盘,请拷贝 VC6LineNumberAddin.dll 文件 到如下目录: C:\Program Files\Microsoft Visual Studio\Common\MSDev98\AddIns 2.、注册 双击 VC6LineNumberAddin.reg 进行注册; 3、启用 打开... -
VC6LineNumberAddin.rar(VC6.0行数显示插件)
2010-10-09 16:52:27使用方法:下载插件后,保存到任何目录,运行VC6,点击菜单“Tools”-“Customize”,选择“Add-ins and Macro Files”页,点击“Browse”,选择这个插件的dll文件,即可。效果很美观。 -
vc6.0显示行号插件
2010-09-07 11:08:42下载插件后,保存到任何目录,运行VC6.0,点击菜单“Tools(工具)”-“Customize(定制)”,选择“Add-ins and Macro Files(附加项和宏文件)”页,点击“Browse(浏览)”,把文件类型选为.dll,选择这个插件的... -
VC项目操作
2020-06-22 13:34:39先把外来文件复制到当前项目的目录下,从“项目”(Project)菜单下选择“添加项目”(Add to Project)下的“Files”菜单项,从弹出的打开文件对话框中把外来文件打开即可。 如何在一个工作区中打开多个项目? 一般编程... -
VC.NET文件对话框使用演示
2021-03-15 15:12:17文件对话框的使用演示,功能有如何设置文件保存对话框、如何设置文件对话框的标题、如何设置文件对话框过滤器、如何设置文件对话框多重选择功能、如何设置文件对话框打开时的目录位置、如何设置从文件对话框中获取... -
autoboot源码,VC远程添加开机自启程序
2021-03-15 15:17:50VC远程添加开机自启程序,介绍了通过Win.ini和注册表两种方法实现的添加程序开机自动启动功能,这好像是一个远程控制相关的程序,把本程序拷贝到系统目录下,并改名为intranet.exe,这样做的目的是为了迷惑被控制端... -
vc6.0使用教程详解.doc
2011-05-19 13:26:16选择“Win32 Console Application”(控制台应用程序,左边倒数第三个),命名工程名称,选择保存位置, 点击“确定”,进入下一步,看到如下提示界面: 建立一个空工程,对应其他需要的你一可以建立别的工程;点击... -
VC 抓屏的各种方法
2020-07-25 11:04:58目录: l 导言 l 用GID函数抓屏 l 用DirectX方式抓屏 l 用Windows Media API抓屏 导言 有时候我们需要编程抓取整个屏幕上的内容,下面我将介绍抓屏是如何实现的。典型地,我们可以用GID和DirectX来完成,另外一个... -
TabBars---VC6 IDE增强插件
2008-12-07 16:47:58有时候开发人员需要频繁地打开位于某个目录中的文件,比如浏览某个软件包代码的时候,可是VC集成环境的“当前目录”却在project文件所在的目录,每次打开文件时文件选择对话框都会自动定位到project文件所在的目录... -
DEV C++ VC6.0 Visual Studio 显示行号
2012-03-09 10:01:40DEV C++ 在菜单栏里选择 工具-》编译器选项-》显示 ,然后把“行号”那个选项打勾就可以了。 Visual Studio ...下载插件后,保存到任何目录,运行VC6,点击菜单“Tools”-“Customize”,选择“A -
pt 1.0 (用vc2008写的拼图)
2013-01-17 20:10:26用vc2008写的拼图游戏,含源代码,分为数字和图片两种模式,难度从3阶到9阶可选,用逆推洗牌的方法打乱,不会出现无解的情况,用户可自己选择图片,里面的菜单和按钮都是动态创建的,图片也是动态切割的,切割好的... -
VC企业短信群发系统源代码
2012-08-23 10:03:01(2)单击“短信息发送”按钮,打开“短信发送”窗口,单击“电话簿”按钮,选择发送人,然后单击“插入常用语”按钮选择信息内容,或者在“信息内容”中直接输入要发送的内容,单击“发送信息”按钮即可。... -
VC驿站基础班教程无KEY高清
2013-02-20 23:32:44VC驿站 VC++基础班课程目录如下: (当然,有些知识点可能一节课讲不完,那样就会串到下一节课讲,以此类推!) 1、VC++编程环境介绍 ①、编程环境、编译器; ②、名词解释; ③、一个简单的MFC对话框工程; ④... -
师父教我VC项目有条理的搭建
2012-03-06 17:43:07师父教我VC项目有条理的搭建,怕忘了,记录一下 ...2.创建一个Win32 Static Library工程,保存到prj目录下,命名为test,这个是可以直接编译的,可以生成一个lib文件来被应用程序调用,在工程-设置-选择tese工程, -
VC6.7z (绿色版、已集成EGE)
2011-12-11 13:09:56在上面选择Files页,再在右边Location选择要保存的目录 然后在那页选择C++ Source File,再在右边的File填写文件名,比如test.cpp 按确定,就新建了一个空的文档 然后,编写如下代码: #include "graphics.h" int ...