WM_NOTIFY mit beliebiger ControlID (aus Membervariable)?
-
Hallo!
Ich habe in meiner Anwendung viele CFormviews mit CListCtrl.
Aus dem Grund sind viele funktionen nur Copy & Paste und deswegen mache ich jetzt eine Basisklasse dafür.
Jetzt habe ich mit den Notifies aber ein Problem.
Bisher sah das so aus:
[cpp]BEGIN_MESSAGE_MAP(COrteView, CFormView)
//{{AFX_MSG_MAP(COrteView)
ON_NOTIFY(HDN_ITEMCHANGED, 0, OnItemchangedLscOrte)
ON_NOTIFY(LVN_KEYDOWN, IDC_LSC_ORTE, OnKeydownLscOrte)
ON_NOTIFY(NM_CLICK, IDC_LSC_ORTE, OnClickLscOrte)
ON_NOTIFY(LVN_DELETEITEM, IDC_LSC_ORTE, OnDeleteitemLscOrte)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
[/cpp]
Und das in JEDEM View. Deswegen wollte ich das so machen:
[cpp]BEGIN_MESSAGE_MAP(CBasisLscView, CBasisView)
//{{AFX_MSG_MAP(CBasisLscView)
ON_NOTIFY(HDN_ITEMCHANGED, 0, OnItemchangedLsc) // Der funktioniert!
ON_NOTIFY(LVN_KEYDOWN, m_nLscID, OnKeydownLsc) // Und der Rest nicht mehr
ON_NOTIFY(NM_CLICK, m_nLscID, OnClickLsc)
ON_NOTIFY(LVN_DELETEITEM, m_nLscID, OnDeleteitemLsc)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
[/cpp]
Und nun bekomme ich die folgenden Fehlermeldungen:D:\Realisierung\Views\Basis\BasisLscView.cpp(44) : error C2440: 'type cast' : 'unsigned int CBasisLscView::' kann nicht in 'unsigned short' konvertiert werden
Diese Konvertierung ist eine gueltige Standardkonvertierung, die implizit oder mit dem static_cast-Operator oder mit einer Typumwandlung im C- oder Funktionsformat durchgefuehrt wird
D:\Realisierung\Views\Basis\BasisLscView.cpp(44) : error C2440: 'type cast' : 'unsigned int CBasisLscView::' kann nicht in 'unsigned short' konvertiert werden
Diese Konvertierung ist eine gueltige Standardkonvertierung, die implizit oder mit dem static_cast-Operator oder mit einer Typumwandlung im C- oder Funktionsformat durchgefuehrt wird
D:\Realisierung\Views\Basis\BasisLscView.cpp(44) : error C2440: 'initializing' : 'void (__thiscall CCmdTarget::)(void)' kann nicht in 'unsigned int' konvertiert werden
Diese Konvertierung ist eine gueltige Standardkonvertierung, die implizit oder mit dem static_cast-Operator oder mit einer Typumwandlung im C- oder Funktionsformat durchgefuehrt wird
D:\Realisierung\Views\Basis\BasisLscView.cpp(45) : error C2440: 'type cast' : 'unsigned int CBasisLscView::' kann nicht in 'unsigned short' konvertiert werden
Diese Konvertierung ist eine gueltige Standardkonvertierung, die implizit oder mit dem static_cast-Operator oder mit einer Typumwandlung im C- oder Funktionsformat durchgefuehrt wird
D:\Realisierung\Views\Basis\BasisLscView.cpp(45) : error C2440: 'type cast' : 'unsigned int CBasisLscView::' kann nicht in 'unsigned short' konvertiert werden
Diese Konvertierung ist eine gueltige Standardkonvertierung, die implizit oder mit dem static_cast-Operator oder mit einer Typumwandlung im C- oder Funktionsformat durchgefuehrt wird
D:\Realisierung\Views\Basis\BasisLscView.cpp(45) : error C2440: 'initializing' : 'void (__thiscall CCmdTarget::)(void)' kann nicht in 'unsigned int' konvertiert werden
Diese Konvertierung ist eine gueltige Standardkonvertierung, die implizit oder mit dem static_cast-Operator oder mit einer Typumwandlung im C- oder Funktionsformat durchgefuehrt wird
D:\Realisierung\Views\Basis\BasisLscView.cpp(46) : error C2440: 'type cast' : 'unsigned int CBasisLscView::' kann nicht in 'unsigned short' konvertiert werden
Diese Konvertierung ist eine gueltige Standardkonvertierung, die implizit oder mit dem static_cast-Operator oder mit einer Typumwandlung im C- oder Funktionsformat durchgefuehrt wird
D:\Realisierung\Views\Basis\BasisLscView.cpp(46) : error C2440: 'type cast' : 'unsigned int CBasisLscView::' kann nicht in 'unsigned short' konvertiert werden
Diese Konvertierung ist eine gueltige Standardkonvertierung, die implizit oder mit dem static_cast-Operator oder mit einer Typumwandlung im C- oder Funktionsformat durchgefuehrt wird
D:\Realisierung\Views\Basis\BasisLscView.cpp(46) : error C2440: 'initializing' : 'void (__thiscall CCmdTarget::*)(void)' kann nicht in 'unsigned int' konvertiert werden
Diese Konvertierung ist eine gueltige Standardkonvertierung, die implizit oder mit dem static_cast-Operator oder mit einer Typumwandlung im C- oder Funktionsformat durchgefuehrt wird
Fehler beim Ausführen von cl.exe.In der MSDN habe ich nichts hilfreiches gefunden und hartes Casten geht auch nicht.

Geht sowas nicht oder muss ich das anders machen?Was meint der überhaupt mit: 'unsigned int CBasisLscView::*'?

Bitte helft mir auf die Sprünge

-
Schieb!
Habe ich es schlecht beschrieben oder geht es nicht?
-
Hat sich erledigt, habe wieder was neues gelernt und deswegen geht das nicht, was ich vorhatte.

Muss ich die MessageMap doch für jede abgeleitete Klasse kopieren - so ein Blödsinn...