⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 cchoosedirdialog.cpp

📁 PGP8.0源码 请认真阅读您的文件包然后写出其具体功能
💻 CPP
字号:
/*____________________________________________________________________________
		Copyright (C) 2002 PGP Corporation
        All rights reserved.

        $Id: CChooseDirDialog.cpp,v 1.4 2002/11/02 00:02:23 wjb Exp $
____________________________________________________________________________*/

#include "pgpClassesConfig.h"
#include <shlobj.h>

#include "CChooseDirDialog.h"
#include "CComLibrary.h"
#include "CComObject.h"
#include "CPath.h"

// From the newest SDK.

#define BIF_EDITBOX			0x0010
#define BIF_NEWDIALOGSTYLE	0x0040
#define BIF_USENEWUI		(BIF_NEWDIALOGSTYLE | BIF_EDITBOX)

_USING_PGP

// Class CChooseDirDialog member functions

void 
CChooseDirDialog::Choose(HWND parentWnd, const char *title, CPath& dir)
{
	pgpAssertStrValid(title);

	CComLibrary	comLibrary;
	IMalloc		*pMalloc1;

	PGPUInt32	result	= SHGetMalloc(&pMalloc1);

	if (result != NOERROR)
		THROW_PGPERROR(kPGPError_Win32COMOpFailed);

	CComObject<IMalloc>	pMalloc(pMalloc1);
	
	BROWSEINFO	browseInfo;
	pgpClearMemory(&browseInfo, sizeof(browseInfo));

	CPath	displayName;

	LPITEMIDLIST	pidl=NULL;

	// Browse from My Computer (local drives)
	SHGetSpecialFolderLocation(0,CSIDL_DRIVES,&pidl);

	browseInfo.pidlRoot			= pidl;
	browseInfo.hwndOwner		= parentWnd;
	browseInfo.pszDisplayName	= displayName.GetBuffer(
		PFLConstants::kMaxPathLength);
	browseInfo.lpszTitle		= title;
	browseInfo.ulFlags			= BIF_RETURNONLYFSDIRS | BIF_USENEWUI;

	LPITEMIDLIST	pItemIDList	= SHBrowseForFolder(&browseInfo);
	displayName.ReleaseBuffer();

	if(pidl!=NULL)
	{
		pMalloc1->Free(pidl);
	}

	pMalloc1->Release();

	try
	{
		if (IsNull(pItemIDList))
			THROW_PGPERROR(kPGPError_UserAbort);

		if (!SHGetPathFromIDList(pItemIDList, dir.GetBuffer(
			PFLConstants::kMaxPathLength)))
		{
			dir.ReleaseBuffer();
//			THROW_PGPERROR(kPGPError_Win32COMOpFailed);
		}

		dir.ReleaseBuffer();
		pMalloc->Free(pItemIDList);
	}
	catch (CComboError&)
	{
		pMalloc->Free(pItemIDList);
		throw;
	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -