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);
}
};

CFileDialog 在弹出文件打开和保存对话框时不居中,为提升用户体验,可以派生新的类CMyFileDialog来实现对话框居中。通过重载OnInitDone()函数,调用CenterWindow()方法将对话框相对于其父窗口居中。
最低0.47元/天 解锁文章
2971

被折叠的 条评论
为什么被折叠?



