Symbole in Menüs von MFC Feature Pack-Klassen

8

Es gibt drei Stellen, an denen Menüs in der neuen MFC-Funktionalität (Feature Pack) angezeigt werden:

  • In Menüleisten (CMFCMenuBar)
  • In Popup-Menüs (CMFCPopupMenu)
  • In der 'Dropdown-Menü' Version von CMFCButton

Ich möchte Symbole (mit hoher Farbe und mit Transparenz) in die Menüs in allen von ihnen einfügen. Ich habe CFrameWndEx :: OnDrawMenuImage () gefunden, mit dem ich die Symbole vor den Menüleistenelementen benutzerdefiniert zeichnen kann. Es ist nicht sehr praktisch, die Symbolzeichnung im Jahr 2008 zu implementieren, aber es funktioniert. Für die anderen habe ich noch keine Lösung gefunden. Gibt es eine automatische Möglichkeit Symbole für Menüs zu setzen?

    
Roel 16.09.2008, 08:34
quelle

5 Antworten

4

So habe ich es zum Laufen gebracht:

Zuerst

, wie die anderen sagten, erstellen Sie eine unsichtbare Symbolleiste neben Ihrer Hauptsymbolleiste (ich verwende die üblichen Namen basierend auf den Namen von AppWizard):

%Vor%

Zweitens: Die Bild- und Symbolleistenressourcen

IDR_MAINFRAME und IDR_MAINFRAME_256 wurden vom Anwendungs-Assistenten generiert. Die erste ist die hässliche 16-Farben-Version und die letztere ist die interessante Version mit hoher Farbe.
Trotz meines Namens, wenn ich mich richtig erinnere, hat sogar das von AppWizard generierte Bild 24 Bit Farbtiefe. Das coole Ding: Ersetzen Sie es einfach durch ein 32-Bit-Bild und das wird auch funktionieren.

Es gibt die unsichtbare Werkzeugleiste IDR_OTHERTOOLBAR : Ich habe eine Werkzeugleiste mit dem Ressourceneditor erstellt. Nur einige Dummy-Symbole und die Befehls-IDs. VS erzeugte dann eine Bitmap, die ich durch meine Version mit hoher Farbe ersetzte. Fertig!

Hinweis

Öffnen Sie die Symbolleisten nicht mit dem Ressourceneditor: Sie müssen ihn möglicherweise in 4bit konvertieren, bevor er etwas damit anfangen kann. Und sogar wenn Sie es tun lassen (weil hinter Visual Studio's Rückseite das Ergebnis wieder durch das hohe Farbbild ersetzt wird, ha!), Habe ich es gefunden (manchmal?) einfach kann die Symbolleiste nicht bearbeiten. Sehr seltsam.
In diesem Fall empfehle ich, die .rc-Datei direkt zu bearbeiten.

    
foraidt 31.07.2009, 16:36
quelle
2

Ich glaube (aber ich kann falsch liegen), dass diese Klassen den BCGToolbar-Klassen entsprechen, die in MFC enthalten waren, als Microsoft BCG kaufte. Wenn dies der Fall ist, können Sie eine Symbolleiste erstellen und dieselbe ID für eine Symbolleistenschaltfläche verwenden wie für die Menüelemente, für die Sie Symbole erstellen möchten. Diese sollten automatisch angezeigt werden. Natürlich müssen Sie die Symbolleisten nicht anzeigen.

    
Nevermind 16.09.2008 14:06
quelle
2

In BCGToolbar reicht es, eine Symbolleiste in den Ressourcen & amp; Laden Sie es (aber nicht das Fenster anzeigen), aber die Schaltfläche in der Symbolleiste muss die gleiche ID wie der Menüeintrag, mit dem Sie es verknüpfen möchten.

    
Nevermind 18.09.2008 14:24
quelle
2

Versuchen Sie es mit dieser Funktion:

%Vor%

Also z.B .:

%Vor%

hat sehr gut für mich gearbeitet.

    
Alarich 06.08.2009 16:13
quelle
0

Eine Sache, die eine Person überraschen kann, ist, dass für anpassbare (dh nicht gesperrte) Symbolleisten, die erste Symbolleiste, die Sie erstellen, das Framework aufgeteilt wird und zu einer Art Paletten-Bitmap aller Symbole im Programm wird. Wenn Sie später (oder andere Symbolleisten) weitere Symbolleisten mit Bitmaps (oder PNGs) mit einer anderen Farbtiefe als der ersten hinzufügen, scheinen sie fehlzuschlagen, da sie nicht zur selben Palette hinzugefügt werden können.

    
Vek 23.04.2009 23:09
quelle

Tags und Links