SwordMaster Geschrieben 24. April 2005 Geschrieben 24. April 2005 Hallo Leute. ich brauche ein CListCtrl mit Context menü. Und die Klasse soll dann auch auf die ereignisse des Kontext menüs reagieren. Mit folgendem Ansatz hätte ich es versucht. - Ich habe eine neue klasse angelegt und als Basisklasse CListCtrl genommen. - Bei den Resourcen (Visual Studio 6.0) habe ich ein neues Menü angelegt und sie per Klassen Assistenten der neuen Klasse zugeordnet. - in der neuen Klasse habe ich auf das Ereigniss WM_CONTEXTMENU reagiert. und lasse das Context menü erscheinen. Soweit ist alles so wie ich es will. (Context Menü erscheint auch schon) Jetzt zu meinem Problem. Das ListCtrl bekommt von den Ereignissen des Contextmenüs nichts mit! :-(((. Ich kriege die ereignisse weder in der WindowProc (der neuen ListCtrl klasse) mit, noch funktioniert es wenn ich über den Klassenassistenten für jeden Menüeintrag so eine Behandlungsmethode erstellen lasse. Das einzige wo ich die Ereignisse mitbekomme ist in der WindowProc des Dialogfensters. In der WindowProc des Dialogfensters kann ich per if (message == WM_COMMAND && LOWORD(wParam) == ID_TASKMANAGER_COPYPID) Das Ereigniss abfragen. Wobei ID_TASKMANAGER_COPYPID die ID des Menüeintrags ist. Also zu meiner Frage: Gibt es eine Möglichkeit wie ich diese Ereignisse in der Neuen ListCtrl Klasse abfangen kann? Laut MSDN: ist in (HWND) lParam das Handle des Controls. Also hätte ich noch versucht dass in in der WindowProc des Dialogs einfach abfrage wenn (HWND) lParam == <Dem Handle des ListCtrls> ist und dann die Nachricht an die ListCtrlKlasse weiter delegiere. jedoch ist (HWND)lParam immer NULL bei den Ereignissen des Context Menüs. Hat jemand eine gute Idee für mich? Ich möchte die Behandlung der Contetmenü-Ereignisse einfach in der neuen CListCtrl klasse machen. Danke SwordMaster Zitieren
Klotzkopp Geschrieben 24. April 2005 Geschrieben 24. April 2005 Wie sieht denn dein Aufruf von TrackPopupMenu aus? Zitieren
SwordMaster Geschrieben 24. April 2005 Autor Geschrieben 24. April 2005 oh man, bin ich .... DANKE hab den fehler durch deinen hinweis gefunden! so hat er ausgesehen. void CContextListCtrl::OnContextMenu(CWnd* pWnd, CPoint point) { m_contextmenu->TrackPopupMenu(TPM_LEFTALIGN | TPM_LEFTBUTTON | TPM_RIGHTBUTTON, point.x, point.y, AfxGetMainWnd()); } hab das AfxGetMainWnd() durch "this" geändert und schon läuft alles. da probier ich mortz rum, und dann liegts an so ner Kleinigkeit. Vielen Dank! Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.