Listbox und das Menü beim Rechtsklick
-
Hallo,
wenn man normal mit einem Rechtsklick auf den Desktop klick, dann erscheint ein kleines Menü, wo man z.B. auf Eigenschaften klicken kann.
(Wie nennt man denn dieses Menü?)
Jedenfalls möchte ich so etwas bei meiner Listbox haben, sodass, wenn der User einen bestimmten String anklickt ein solches Menü auftaucht, wo er Löschen klicken kann. Wie geht so etwas?
-
Ein Kontextmenü ?
Rechtsklick (RBUTTONUP - glaub ich) in der Listbox (Ereignis) abfangen und in der Funktion dein Menü laden.
Code kann ich dir leider nicht geben, hab das schon ziehmlich lange nicht mehr gemacht.
-
Leider habe ich so etwas noch nie gemacht. Kann man so ein Menü im Resource-Editor erstellen?
-
1.Im Ressourcen-Editor ein Menue hinzufügen
2.Im Klassenassisten eine Methode zur Behandlung von WM_CONTEXTMENU hinzufügen
3.Folgenden Code in die Methode einfügen:void CAutofinderDlg::OnContextMenu(CWnd* pWnd, CPoint point) { CRect rec; m_Liste.GetWindowRect(&rec); if(rec.PtInRect(point)) { CMenu popup; popup.LoadMenu(IDR_MENU1); popup.TrackPopupMenu(TPM_CENTERALIGN,point.x,point.y,this); } }4.In OnCommand deines Menüpunktes das Löschen ausführen
-
Ich habe es mittlerweile geschafft. Aber es gibt noch ein Problem: Wenn ich ein zweites Mal rechtsklicke, während das Kontextmenü angezeigt wird, dann erscheint kein neues Kontextmenü, wie man es normalerweise kennt. Wie behebt man das?
-
Ich hatte einfach vergessen, ein Flag zu setzen.
Kann man das auch noch anders machen als die Nachricht mit OnCommand abzufangen?
-
Andorxor schrieb:
2.Im Klassenassisten eine Methode zur Behandlung von WM_CONTEXTMENU hinzufügen
Noch besser, daran hatte ich gar nicht gedacht.

-
Ich habe aber noch ein Problem: In meiner Listbox wird, wenn ich einen String selektiere, das komplette Feld blau unterlegt (also auch rechts vom String, bis zum Ende der Listbox)
Im normalen Explorer ist das ja anders.
Was muss man machen, um das hinzubekommen?