正文

打开目录对话框类[网络资料收集]2007-01-07 20:19:00

【评论】 【打印】 【字体: 】 本文链接:http://blog.pfan.cn/programming/22334.html

分享到:

举例: CFoldersDialog cFolderDlg; cFolderDlg.BrowseFolder(m_hWnd,&m_strDirPath,_T("请选择文件夹"));浏览文件夹的对话框会显示“请选择文件夹”提示字符,确定之后的文件夹路径会返回到m_strDirPath中,取消后不返回。 // FoldersDialog.cpp: implementation of the CFoldersDialog class.////////////////////////////////////////////////////////////////////////#include "stdafx.h"#include "FoldersDialog.h" //////////////////////////////////////////////////////////////////////// Construction/Destruction////////////////////////////////////////////////////////////////////// CFoldersDialog::CFoldersDialog(){ } CFoldersDialog::~CFoldersDialog(){ }   int CALLBACK BrowseCallbackProc(HWND hwnd,UINT uMsg,LPARAM lp, LPARAM pData) { switch(uMsg)  {   case BFFM_INITIALIZED:    ::SendMessage(hwnd, BFFM_SETSELECTION, TRUE, pData);     break;   default:     break; }  return 0;} int CFoldersDialog::BrowseFolder(HWND hWnd, CString* pBrowsePath, LPSTR strTitle){ BROWSEINFO bi; TCHAR szDir[MAX_PATH]; LPITEMIDLIST lpidlBrowse; CString BrowsePath;  if (pBrowsePath == NULL || hWnd == NULL)  return FALSE; BrowsePath = *pBrowsePath; if(BrowsePath != "") {  if(BrowsePath.Right(1) == "\\")   BrowsePath = BrowsePath.Left(BrowsePath.GetLength() - 1);   //删除末尾的"\\" }  ZeroMemory(&bi,sizeof(BROWSEINFO)); bi.hwndOwner = hWnd; bi.lpszTitle = strTitle; bi.ulFlags = BIF_RETURNONLYFSDIRS; bi.lpfn = BrowseCallbackProc; bi.lParam = (LPARAM)pBrowsePath->GetBuffer(0);  lpidlBrowse = SHBrowseForFolder(&bi); if (lpidlBrowse)  {    SHGetPathFromIDList(lpidlBrowse,szDir);    pBrowsePath->Format("%s",szDir); }  return TRUE;} /**************************************************************************/ // FoldersDialog.h : header file// #if !defined(AFX_FOLDERSDIALOG_H_INCLUDED_)#define AFX_FOLDERSDIALOG_H_INCLUDED_ #if _MSC_VER > 1000#pragma once#endif // _MSC_VER > 1000 /////////////////////////////////////////////////////////////////////////////// CFoldersDialog dialog class CFoldersDialog  {public: CFoldersDialog(); virtual ~CFoldersDialog(); int BrowseFolder(HWND hWnd, CString* pRootPath, LPSTR strTitle);}; #endif // !defined(AFX_FOLDERSDIALOG_H_INCLUDED_) /***************************************************************************/

阅读(2996) | 评论(0)


版权声明:编程爱好者网站为此博客服务提供商,如本文牵涉到版权问题,编程爱好者网站不承担相关责任,如有版权问题请直接与本文作者联系解决。谢谢!

评论

暂无评论
您需要登录后才能评论,请 登录 或者 注册