dirdialog.h

来自「《windows程序设计》王艳平版的书籍源代码」· C头文件 代码 · 共 57 行

H
57
字号
/////////////////////////////////////////////////
// DirDialog.h文件

#ifndef __DIRDIALOG_H_
#define __DIRDIALOG_H_

#include <shlobj.h>

class CDirDialog
{
public:
	CDirDialog();
	// 显示对话框
	BOOL DoBrowse(HWND hWndParent, LPCTSTR pszTitle = NULL);
	// 取得用户选择的目录名称
	LPCTSTR GetPath() { return m_szPath; }

protected:
	BROWSEINFOA m_bi; 

	// 用来接受用户选择目录的缓冲区
	char m_szDisplay[MAX_PATH];
	char m_szPath[MAX_PATH];
};

CDirDialog::CDirDialog()
{
	memset(&m_bi, 0, sizeof(m_bi));

	m_bi.hwndOwner = NULL;	 
	m_bi.pidlRoot = NULL;		 	
	m_bi.pszDisplayName = m_szDisplay; 
	m_bi.lpszTitle = NULL;		 	
	m_bi.ulFlags = BIF_RETURNONLYFSDIRS;
	
	m_szPath[0] = '\0';
}

BOOL CDirDialog::DoBrowse(HWND hWndParent, LPCTSTR pszTitle)
{
	if(pszTitle == NULL)
		m_bi.lpszTitle = "选择目标文件夹";
	else
		m_bi.lpszTitle = pszTitle;

	m_bi.hwndOwner = hWndParent;
	LPITEMIDLIST pItem = ::SHBrowseForFolder(&m_bi);
	if(pItem != 0)
	{
		::SHGetPathFromIDList(pItem, m_szPath);
		return TRUE;
	}

	return FALSE;
}

#endif //__DIRDIALOG_H_

⌨️ 快捷键说明

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