Frage

Gibt es eine Möglichkeit, die Farben von Ebene Win32-Menü (Hintergrund, Text und markiert) für einen einzelnen Prozess, ohne mit SetSysColors verwendet zu ändern?

(SetSysColors hat eine globale Änderung, was schlecht ist, und wenn Sie die Farben zum Absturz bringen oder wieder vergessen mit SetSysColors zurück zu setzen vor dem Verlassen, werden sie nicht wiederhergestellt werden, bis Sie abzumelden.)

War es hilfreich?

Lösung

Wenn ich Ihren Kommentar zu Rob glaube, ist es für eine Haut Anwendung, mit besonderer Optik und Haptik. So ist der Weg zu gehen, ist wohl in der Tat, wie Ferek weist darauf hin (in unfreundlich ...) Ownerdrawn-Menü zu verwenden. Sie in der Lage sein werden, genau ihr Aussehen zu definieren

Andere Tipps

Die SetMenuInfo () API ist dein Freund. Damit können Sie jede Bürste gelten für Ihre Menüs Hintergrund zu malen.

Etwas in dieser Richtung sollte Ihr Problem lösen:

MENUINFO mi = { 0 }; 
mi.cbSize = sizeof(mi); 
mi.fMask = MIM_BACKGROUND|MIM_APPLYTOSUBMENUS; 
mi.hbrBack = hBrush; 

HMENU hMenu = ::GetMenu(hWnd); 
SetMenuInfo(hMenu, &mi); 

Ich habe zu fragen, warum? Die Annahme des normalen Windows-Look-and-Feel ist gut; es bedeutet, dass Benutzer sicher sein, dass es konsistente Elemente in der Benutzeroberfläche sind, auf dem sie ihre Erfahrungen mit einer anderen Software für die Plattform abbilden können.

[Ich predige wahrscheinlich auf die umgewandelt, natürlich, aber ich dachte, dass ich den Punkt machen würde so jeder, der für diese eine Antwort liest startet nicht alle Menüs machen himmelblau-rosa weil es aussieht hübsch.]

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top