Keine Message von CListBox

jokey2

Erfahrenes Mitglied
Hallo Leute!
Und das nächste Problem: Einer meiner Views ist ein CFormView (abgeleitet natürlich), welches momentan nur eine ListBox enthält, die das Form fast ganz ausfüllt.
1. Warum kriege ich da keine NM_RCLICK - Message? In einem anderen View (CTreeView) bekomme ich sie und kann darauf reagieren (Popupmenü öffnen). In der CFormView wird mir die Message gar nicht angeboten, um eine Behandlungsroutine anzulegen. Ich hab sie dann mal per Hand angelegt, aber da kam keine Message.
2. Warum kriege ich die WM_RBUTTONDOWN Message nur, wenn ich auf den schmalen Rand außerhalb der ListBox klicke und nicht, wenn ich in die ListBox klicke. Im Resouce-Editor habe ich bei den Eigenschaften 'Benachrichtig.' aktiviert, Da sollte sie doch ihre Messages an das FormView weiterleiten, oder?

Ich stehe vor einem Rätsel.

Grüße, jokey2
 
Hallo, Alle!
Das Problem gibt's immer noch! Kann mir denn keiner dabei helfen? Ich habe inzwischen das CListCtrl durch ein CRichEditCtrl ersetzt. Die Ausgabe funktioniert, aber auch da kommen keine Nachrichten. Ich will doch nur ein Kontextmenü impementieren! :(

jokey2

P.S.: Die Views sind in einem Splitter-Window.
 
Hallo, ich wollte das Problem nochmal in Erinnerung rufen. Ich möchte nur ungern Buttons unter dem CRichEditCtrl anbringen, um die Aktionen auszulösen.
 
Ah, beim RichEdit musst du die Events erst enablen. Das geht mit SetEventMask. Da kannst du dann die Events angeben, die eine Nachricht an das Parent auslösen sollen.
Alles nur Verwirrtaktik.
 
Ich hab's mal ausprobiert mit SetEventMask(ENM_MOUSEEVENTS) und SetEventMask(-1), jeweils in OnInitialUpdate, hat aber beides nichts gebracht. Die Nachrichten kommen nicht durch. Gibt's da noch was, was ich beachten muß?
Die OnNotify() Nachricht kommt, der Code ist aber immer 1792, egal, was ich mache. Ich weiß nicht, was das für eine NM - Nachricht ist.
 
So, jetzt hab' ich's rausgefunden. Wär ja auch ein wunder, wenn es einfach so ginge, oder?
Alsi im OnInitialUpdate habe ich
Code:
m_reditLog.SetEventMask(ENM_MOUSEEVENTS);
aufgerufen, um die Maus-Events freizuschalten. Dann habe ich einen Messagehandler für 'EN_MSGFILTER' eingebaut (das war die 0x700 bzw. 1792 im OnNotify()). Darin habe ich dann folgenden Code eingefügt:
Code:
switch(pMsgFilter->msg)
     {
     case WM_RBUTTONDOWN:
     	DoPopupMenu();
     	break;
     default:
     	break;
     }
und so funktioniert es.
Ich frage mich nur, warum der Klassenassistent z.B. die NM_RCLICK - Nachricht für das RichEdit anbietet, wenn es damit nicht funktioniert. Oder gibt es da noch eine andere Lösung?
 
Zurück