2010-12-01 4 views
0

Ich habe CMenu Instanz, auf der ich mehrere Elemente hinzufügen. Für eines der Elemente, die ich hinzugefügt habe, habe ich das Flag MF_HILITE gesetzt.Windows Menü: MF_HILITE Flag ist nicht gelöscht

Wenn ich das Menü zeige, wird das entsprechende Element richtig hervorgehoben, wie gewünscht. Das Problem ist, dass es hell erleuchtet bleibt, bis ich die Maus darüber bewege und verlasse. Ich möchte nur einen Gegenstand zu dieser Zeit beleuchtet haben. Es scheint, dass Windows es nicht aufhellt, wenn ein anderes Element hochhillig ist.

Wie könnte ich es zwingen, unbeleuchtet zu werden, sobald ein anderer Gegenstand das Hi-Light bekommt? Ich konnte keinen Mouse-Over-Callback oder keine Nachricht für das Menü finden, und ich konnte auch keine Ungültigkeit finden.

+0

Ich weiß, dass ich das Menü auf eine seltsame Weise benutze :) Ich verwende ein CMenu als Combobox Popup für ein bestimmtes Szenario. Das Combobox-Popup hellt das aktuelle Element auf, wenn es geöffnet wird, und sobald der Benutzer die Bewegung bewegt, ändert sich das hell erleuchtete Element. – decasteljau

Antwort

0

Es scheint nicht möglich zu sein.

Der interne Status für das aktuell ausgewählte Element im Menü kann nicht eingestellt werden. Wenn Sie MF_HILITE oder HiliteMenuItem verwenden, wird das aktuell ausgewählte Element nicht festgelegt. Es wird nur der visuelle Stil festgelegt.

Als Work-Around habe ich stattdessen ein Popup ListBox verwendet, das alle Funktionen hat, die ich brauche.

0

Sie verwenden MF_HILITE auf eine seltsame Art und Weise. Der Gegenstand ist nicht wirklich hervorgehoben, er ist nur so gezeichnet wie er ist. Wenn der Benutzer die Eingabetaste drückt, wird der "markierte" Eintrag nicht ausgewählt.

Sie suchen wahrscheinlich nach MF_DEFAULT.

+0

Ich weiß, dass ich das Menü auf seltsame Weise benutze :) Ich benutze ein Menü als Combobox Popup für ein bestimmtes Szenario. Das Combobox-Popup hellt das aktuelle Element auf, wenn es geöffnet wird, und sobald der Benutzer die Bewegung bewegt, ändert sich das hell erleuchtete Element. – decasteljau