\r
#include "DDXHelper.h"\r
\r
-namespace DlgUtils\r
+#undef GetDlgItemText\r
+#undef SetDlgItemText\r
+\r
+template<class T>\r
+class DlgUtils\r
{\r
- template <class T>\r
- void EnableDlgItem(T* dlg, unsigned id, bool enabled)\r
+ T *dlg() { return static_cast<T *>(this); }\r
+\r
+public:\r
+ void EnableDlgItem(unsigned id, bool enabled)\r
{\r
- dlg->GetDlgItem(id)->EnableWindow(enabled);\r
+ dlg()->GetDlgItem(id)->EnableWindow(enabled);\r
}\r
\r
- template <class T>\r
- void SetDlgItemFocus(T* dlg, unsigned id)\r
+ void SetDlgItemFocus(unsigned id)\r
{\r
- dlg->GetDlgItem(id)->SetFocus();\r
+ dlg()->GetDlgItem(id)->SetFocus();\r
}\r
\r
- template <class T>\r
- unsigned GetDlgItemText(T* dlg, unsigned id, String& text)\r
+ unsigned GetDlgItemText(unsigned id, String& text)\r
{\r
- return static_cast<CWnd *>(dlg)->GetDlgItemText(id, PopString(text));\r
+ return dlg()->GetDlgItemTextW(id, PopString(text));\r
}\r
\r
- template <class T>\r
- void SetDlgItemText(T* dlg, unsigned id, const String& text)\r
+ void SetDlgItemText(unsigned id, const String& text)\r
{\r
- return static_cast<CWnd *>(dlg)->SetDlgItemText(id, text.c_str());\r
+ return dlg()->SetDlgItemTextW(id, text.c_str());\r
}\r
-}\r
+};\r
\r
-class CTrDialog : public CDialog\r
+class CTrDialog : public CDialog, public DlgUtils<CTrDialog>\r
{\r
DECLARE_DYNAMIC(CTrDialog)\r
public:\r
CTrDialog(LPCTSTR lpszTemplateName, CWnd *pParentWnd = NULL) : CDialog(lpszTemplateName, pParentWnd) {}\r
\r
virtual BOOL OnInitDialog();\r
- void EnableDlgItem(unsigned id, bool enabled) { DlgUtils::EnableDlgItem(this, id, enabled); }\r
- void SetDlgItemFocus(unsigned id) { DlgUtils::SetDlgItemFocus(this, id); }\r
- unsigned GetDlgItemText(unsigned id, String& text) { return DlgUtils::GetDlgItemText(this, id, text); }\r
- void SetDlgItemText(unsigned id, const String& text) { DlgUtils::SetDlgItemText(this, id, text); }\r
};\r
\r
-class CTrPropertyPage : public CPropertyPage\r
+class CTrPropertyPage : public CPropertyPage, public DlgUtils<CTrPropertyPage>\r
{\r
DECLARE_DYNAMIC(CTrPropertyPage)\r
public:\r
: CPropertyPage(lpszTemplateName, nIDCaption, dwSize) {}\r
\r
virtual BOOL OnInitDialog();\r
- void EnableDlgItem(unsigned id, bool enabled) { DlgUtils::EnableDlgItem(this, id, enabled); }\r
- void SetDlgItemFocus(unsigned id) { DlgUtils::SetDlgItemFocus(this, id); }\r
- unsigned GetDlgItemText(unsigned id, String& text) { return DlgUtils::GetDlgItemText(this, id, text); }\r
- void SetDlgItemText(unsigned id, const String& text) { DlgUtils::SetDlgItemText(this, id, text); }\r
};\r
\r
-class CTrDialogBar : public CDialogBar\r
+class CTrDialogBar : public CDialogBar, public DlgUtils<CTrDialogBar>\r
{\r
DECLARE_DYNAMIC(CTrDialogBar)\r
public:\r
UINT nStyle, UINT nID);\r
virtual BOOL Create(CWnd* pParentWnd, UINT nIDTemplate,\r
UINT nStyle, UINT nID);\r
- void EnableDlgItem(unsigned id, bool enabled) { DlgUtils::EnableDlgItem(this, id, enabled); }\r
- void SetDlgItemFocus(unsigned id) { DlgUtils::SetDlgItemFocus(this, id); }\r
- unsigned GetDlgItemText(unsigned id, String& text) { return DlgUtils::GetDlgItemText(this, id, text); }\r
- void SetDlgItemText(unsigned id, const String& text) { DlgUtils::SetDlgItemText(this, id, text); }\r
};\r