Startseite
Stellenmarkt
Downloads
Kontakt
  Community Center:   Forum  |  Gruppen  |  Chat  |

Zurück   Forum Fachinformatiker.de > Programmierung > C++: Compiler, IDEs, APIs



Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 24.04.2005, 14:26   #1
Reg.-Benutzer
 
Reg.-Datum: 28.09.2002
Ort: Waldkirchen
Standard Context Menü bei CListCtrl

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
__________________
LEBENSMOTTO: ****** dir nix, feid dir nix
SwordMaster ist offline   Mit Zitat antworten
Alt 24.04.2005, 15:30   #2
Administrator + Moderator
C++: Compiler, IDEs, APIs / C und C++, Algorithmik, Basic, Sonstige, .NET
 
Benutzerbild von Klotzkopp
 
Reg.-Datum: 10.07.2001
Ort: Essen
Standard

Wie sieht denn dein Aufruf von TrackPopupMenu aus?
__________________
"Funktioniert nicht" ist keine ausreichende Fehlerbeschreibung.
Klotzkopp ist offline   Mit Zitat antworten
Alt 24.04.2005, 16:15   #3
Reg.-Benutzer
 
Reg.-Datum: 28.09.2002
Ort: Waldkirchen
Standard OHHHH man....

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!
__________________
LEBENSMOTTO: ****** dir nix, feid dir nix
SwordMaster ist offline   Mit Zitat antworten
Antwort

Tags: , ,


Lesezeichen
Zurück   Forum Fachinformatiker.de > Programmierung > C++: Compiler, IDEs, APIs

Themen-Optionen
Ansicht


Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Java Menü in HP MidnightPrincess1982 Webdesign 6 23.09.2004 08:36
Problem mit OpenExchange Server Freak2k1 Linux + Unix 38 06.01.2004 12:49
JavaScript Menü Positionieren ? HackTack1000 Webdesign 2 09.04.2003 12:38
Nero Burning Rom : Menü auf SVCD Schledo Anwendungssoftware 6 15.02.2003 18:18
Mein Menü wird nicht angezeigt ??? HackTack1000 Webdesign 1 08.07.2002 11:06


Alle Zeitangaben in WEZ +2. Es ist jetzt 23:32 Uhr.