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

📄 selectpathdlg.h

📁 有关数字图像处理的一些源码
💻 H
字号:
#ifndef SELECTPATHDLG_H
#define SELECTPATHDLG_H

#ifndef	BIF_NEWDIALOGSTYLE
#define	BIF_NEWDIALOGSTYLE	0x0040
#endif

#ifndef	BIF_USENEWUI
#define	BIF_USENEWUI	0x0050
#endif

//	初始化文件夹设定用的回调函数
int CALLBACK _SHBrowseForFolderCallbackProc(HWND hwnd, UINT uMsg, LPARAM lParam, LPARAM lpData)
{
	if(uMsg == BFFM_INITIALIZED)
		::SendMessage(hwnd, BFFM_SETSELECTION, TRUE, lpData);
	
	return	0;
}


bool g_fSelectFolderDlg(CString* lpstrFolder,CString strIniFolder,bool bAvailNewFolder)
{
	bool		ret;
	char		lpszPath[MAX_PATH];
	LPMALLOC	lpMalloc;
	BROWSEINFO	sInfo;
	LPITEMIDLIST	lpidlRoot;
	LPITEMIDLIST	lpidlBrowse;
	
	if(lpstrFolder == NULL)
		return	false;
	
	if(::SHGetMalloc(&lpMalloc) != NOERROR)
		return	false;
	
	ret = false;
	
	if(strIniFolder != "")
	{
		if(strIniFolder.Right(1) == "\\")
			strIniFolder = strIniFolder.Left(strIniFolder.GetLength() - 1);			//删除末尾的"\\"
		
	}
	
	::SHGetSpecialFolderLocation(NULL, CSIDL_DRIVES, &lpidlRoot);	//取得选定的文件夹名
	
	
	::ZeroMemory(&sInfo, sizeof(BROWSEINFO));
	sInfo.pidlRoot		= lpidlRoot;
	sInfo.pszDisplayName = lpszPath;
	sInfo.lpszTitle		= _T("选择图片保存路径");
	sInfo.ulFlags		= BIF_RETURNONLYFSDIRS;
	if(bAvailNewFolder == true)
		sInfo.ulFlags	|= BIF_EDITBOX | BIF_NEWDIALOGSTYLE | BIF_USENEWUI;
	sInfo.lpfn	= _SHBrowseForFolderCallbackProc;
	sInfo.lParam	= (LPARAM)strIniFolder.GetBuffer(0);
	
	lpidlBrowse = ::SHBrowseForFolder(&sInfo);			//显示文件夹选择对话框
	
	if(lpidlBrowse != NULL)
	{
		if(::SHGetPathFromIDList(lpidlBrowse,lpszPath))	//取得文件夹名		
		{
			*lpstrFolder = "";
			*lpstrFolder = lpszPath;
			
			if(*lpstrFolder != "")
			{
				if(lpstrFolder->Right(1) != "\\")
					*lpstrFolder += "\\";				//在末尾时附加"\\"
			}
		}
		
		ret = true;
	}
	
	if(lpidlBrowse != NULL)
		::CoTaskMemFree(lpidlBrowse);
	if(lpidlRoot != NULL)
		::CoTaskMemFree(lpidlRoot);
	
	lpMalloc->Release();
	
	return	ret;
}

#endif

⌨️ 快捷键说明

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