Hallo zusammen!
Kann mir jemand erklären, wie ich meinem Projekt eine Ereignisbehandlungsroutine für ein dynamisches Steuerelement hinzufügen kann? Ich habe eine SDI-Anwendung implementiert, die eine abgeleitete Ansicht der Klasse CScrollView besitzt, in der ich ein Steuerlelement vom Typ CRichEditCtrl eingebunden habe. Das RichEdit-Steuerelement erzeuge ich zur Laufzeit wie folgt:
|
C Quellcode
|
1
2
3
4
5
6
7
8
|
define IDC_MyRichEditCtrl 102
CRichEditCtrl m_rich;
CRect rect( 0,0,0,0);
DWORD dwStyle = ES_AUTOVSCROLL | .... | ....;
m_rich.Create( dwStyle, rect, this, IDC_MyRichEditCtrl);
|
Im Anschluss daran habe ich mir ein temporäres Projekt amgelegt, aus dem ich mir die folgenden Einträge für die Deklaration der MESSAGE_MAP und die der EVETSINK_MAP kopiert habe. Diese habe ich dann wie folgt in meine View eingebunden:
In die .h-Datei
|
C Quellcode
|
1
2
3
4
5
6
7
|
//Generierte Message-Map-Funktionen
protected:
//{{AFX_MSG(CMyView)
afx_msg void OnMouseDownRichEditCtrl( short Button, short Shift,
long x, long y);
//}}AFX_MSG
DECLARE_MASSAGE_MPA();
|
Analog dazu habe ich in die CPP-Quellcode-Datei folgendes eingefügt:
|
C Quellcode
|
1
2
3
4
5
|
BEGIN_EVENTSINK_MAP(CMyView, CScrollView)
//{{ AFX_EVENTSINK_MAP(CMyView)
ON_EVENT( CMyView, IDC_MyRichEditCtrl, -605 /* MouseDown */, OnMouseDownRichTextCtrl, VTS_I2 VTS_I2, VTS_I4, VTS_I4)
//}}AFX_EVENTSINK_MAP
END_EVENTSINK_MAP()
|
Anschließend möchte ich dann das Ereignis wie folgt abfangen:
|
C Quellcode
|
1
2
3
4
5
|
void CMyView::OnMouseDownRichEditCtrl( short Button, short Shift, long x, long y)
{
TRACE(" MouseDown-Ereignis ");
}
|
Aber von wegen Ereignis... Da rührt sich nichts.
Kann mir jemand mitteilen, woran das liegt?
Vielen Dank und Gruß an alle