正文

打开目录对话框类[网络资料收集]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_)

/***************************************************************************/

阅读(2880) | 评论(0)


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

评论

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