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!

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.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

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...