Ownerdraw Menu Problem
-
Hiho allerseits,
hab angefangen an einem Ownerdraw Menu in XP Style zu arbeiten. Ich habe eine Klasse von CMenu abgeleitet, die MeasureItem und DrawItem Methoden überschrieben und über die Parent Klasse leite ich die WM_DRAWITEM und WM_MEASUREITEM Nachrichten an die abgeleitete Klasse weiter.
Doch es taucht ein Problem auf und zwar: wenn ich mit der Mouse über ein Item mit einem Subitem drüberfahre, verschwinden meine selbstgezeichnete Checkmarks und Icons die eine Positition niedrieger liegen. Hat jemand eine Idee?
Falls jemand immernoch nicht versteht was ich meine, habe ich eine Testanwendung hochgeladen, hier.
-
Vorab: Leide kann ich dir bei deinem Problem nicht helfen. Ich habe nur eine Frage!

Ich habe versucht mir ein eigens Menü zu basteln und dabei so vorgegangen wie bei http://www.csharphelp.com/archives/archive282.html beschreiben.
Jetzt wollte ich mir eine Klasse bauen (abgeleitet von mainmenu) die spezielle Formatierungen automatisch erledigt.
Mein Problem ist: Ich weiß nicht, wie die Methoden DrawItem und MeasureItem überschrieben werden. Auch deren Aufruf ist mir nicht klar…
-
die WM_DRAWITEM und WM_MEASUREITEM Nachrichten werden von Windows geschickt, d.h. du rufst sie bzw. die Methoden nicht auf. Beim erstellen des Menüs, wird für jedes Menu-Item eine WM_MEASUREITEM Nachricht geschickt. Über die übergebene DRAWITEMSTRUCT Struktur, kannst du nötige Größe des Items setzen. WM_DRAWITEM wird auch für jedes Item geschickt, allerdings beim Neuzeichnen des Menüs, hier erhälst du einen Zeiger auf die DRAWITEMSTRUCT Struktur.
Mit C# kenne ich mich zwar nicht aus, aber die Funktionsweise müsste diesselbe sein.
