ON_MESSAGE in template basisklassen
-
wie kann ich erkennen ob die basisklasse eine ON_MESSAGE noch unterstützt oder ist es besser den fehler abzufangen ??
template <class BASE> class CClipToBaseD : public BASE { protected: CClipToBaseD(); virtual ~CClipToBaseD(); protected: LRESULT OnMsgEx(WPARAM wParam, LPARAM lParam); //.. } BEGIN_MESSAGE_MAP_T(<class BASE>, CClipToBaseD<BASE>, BASE) ON_MESSAGE(WM_MSG_EX, OnMsgEx) //... END_MESSAGE_MAP() template <class BASE> LRESULT CClipToBaseD<BASE>::OnMsgEx(WPARAM wParam, LPARAM lParam) { switch (HIWORD(wParam)) { case WM_SET_ORG_ZORDER: SetZOrder_Org(); return 1; default: //hier muss ich prüfen ob BASE OnMsgEx(...) bearbeiten kann oder ist es besser über; try { return BASE::OnMsgEx(wParam, lParam); } catch(..) { return BASE::Default(); } } }
hat jemand eine idee?? danke
[ Dieser Beitrag wurde am 24.04.2003 um 13:35 Uhr von vdittrich editiert. ]
-
Ähm, willst Du gerade WTL-Konstrukte mit MFC-Konstrukten durcheinander schmeissen?
Würde ich Dir aufgrund Übersichtlichkeit nicht raten. Wenn Du schonmal mit MFC angefangen hast, dann bleib lieber bei virtuellen Funktionen!
-
mit
template <class BASE> class CClipToBaseD : public BASE { }
hab ich die möglichkeit mich zwischen z.b unterschiedlichen klassen zu schieben ohne für jede abgeleitete klasse weitere zwischenklasse aufzubauen.
ich finde es persönlich effektiver und funktioniert sicher und ist programmtechnisch beherschbar.
volker
-
Dann schau Dir doch am besten mal an, wie WTL/ATL das realisiert hat!
-
danke ich schau mal nach einen weg überigens habe ich mich von
http://www.codeguru.com/cpp_mfc/tempinh.html
leiten lassen, weil WTL/MFC zwar gemeinsam nutzbar sind aber es bedarf immer wieder ein kurzes umdenken.
volker