Zum Inhalt springen

Empfohlene Beiträge

Geschrieben

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

Geschrieben

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!

Erstelle ein Benutzerkonto oder melde Dich an, um zu kommentieren

Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können

Benutzerkonto erstellen

Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!

Neues Benutzerkonto erstellen

Anmelden

Du hast bereits ein Benutzerkonto? Melde Dich hier an.

Jetzt anmelden

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...