www.pudn.com > CRC32.rar > FileDlg.h


 
/* 
	Copyright 2006 - 2008, All Rights Reserved. 
							 
	打开, 保存, 目录浏览对话框之调用 
 
	作者	- 张鲁夺(zhangluduo) 
	MSN		- zhangluduo@msn.com 
	QQ群	- 34064264 
 
	为所有爱我的人和我爱的人努力! 
*/ 
 
#ifndef _FILEDLG_H 
#define _FILEDLG_H 
 
#pragma warning(disable : 4786) 
#include  
#include  
#include  
#include  
using namespace std; 
 
#include "Thunk.h" 
 
#define _FILEDLG_BUFSIZE 524288 // 1024 * 1024 / 2 = 524288, 此值在有些情况下必须小于1M! 
 
class FileDlg 
{ 
public: 
 
	FileDlg(); 
	virtual ~FileDlg(); 
 
public: 
 
	// 此结构体为win2000以上操作系统定制 
	typedef struct tagOFNEX : public OPENFILENAME 
	{ 
		void*			pvReserved; 
		DWORD			dwReserved; 
		DWORD			FlagsEx; 
	}	OPENFILENAMEEX,	*POPENFILENAMEEX; 
 
	OPENFILENAMEEX	m_OFNOpen; 
	OPENFILENAMEEX	m_OFNSave; 
	BROWSEINFO		m_BIFBrowse; 
 
private: 
 
	Thunk	m_ThunkOpen; 
	Thunk	m_ThunkSave; 
	Thunk	m_ThunkBrowse; 
 
	string	m_InitOpenDir; 
	string	m_InitSaveDir; 
	string	m_InitBrowseDir; 
 
	char*	m_OpenNameBuf; 
	char*	m_SaveNameBuf; 
	char*	m_BrowseNameBuf; 
 
protected: 
 
	virtual UINT_PTR OpenProc	(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam); 
	virtual UINT_PTR SaveProc	(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam); 
	virtual int		 BrowseProc	(HWND hwnd, UINT uMsg, LPARAM lParam, LPARAM lpData); 
 
public: 
 
	vector	GetOpenFileName(HWND hWnd, bool bMulti = false, char* szFilter = NULL, char* szInitName = "\0"); 
	string			GetSaveFileName(HWND hWnd, bool AutoAddSuffixName = true, char* szFilter = NULL, char* szInitName = "\0"); 
	string			GetBrowseForFolder(HWND hWnd, char* szInitPath = "\0"); 
}; 
 
#endif