CFileDialog 及其基类 CFileDialogImpl
用于显示文件打开和文件保存对话框。通过分析WTL源代码发现CFileDialog 的功能做的很不够;在弹出文件打开和文件保存对话框的时候没有居中,为了美观需要实现居中,方法是自己派生一个新类来实现:
class CMyFileDialog: public CFileDialogImpl<CMyFileDialog>
{
public:
CMyFileDialog(BOOL bOpenFileDialog, // TRUE for FileOpen, FALSE for FileSaveAs
LPCTSTR lpszDefExt = NULL,
LPCTSTR lpszFileName = NULL,
DWORD dwFlags = OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT,
LPCTSTR lpszFilter = NULL,
HWND hWndParent = NULL)
: CFileDialogImpl<CMyFileDialog>(bOpenFileDialog, lpszDefExt, lpszFileName, dwFlags, lpszFilter, hWndParent){ }
// Maps
BEGIN_MSG_MAP(CMyFileDialog)
CHAIN_MSG_MAP(CFileDialogImpl<CMyFileDialog>)
END_MSG_MAP()
//重载此函数;实现居中
void OnInitDone ( LPOFNOTIFY lpon )
{
GetFileDialogWindow().CenterWindow(lpon->lpOFN->hwndOwner);
}
};