2 Stimmen

Wie legen Sie fest, dass ein Diamant in einem NSMenuItem (Indikator für minimierte Fenster) angezeigt wird?

Ich erstelle eine JNI, um eine anwendungsweite Menüleiste anstelle der JFrame-spezifischen anzuzeigen. Dadurch kann ich eine Menüleiste anzeigen lassen, auch wenn keine JFrames vorhanden sind. Ich habe ein kleines Problem, in meinem Fenster-Menü kann ich nicht herausfinden, wie man einen Diamanten für die Fenster, die minimiert sind anzuzeigen. Soweit ich weiß, gibt es in der Standard-API nur drei Zustände: On, Off und Mixed, wobei Mixed ein Bindestrich ist. Gibt es eine Möglichkeit, die minimierte Raute mit der Standard-API anzuzeigen? Oder muss ich ein Rautenbild erstellen und dieses verwenden?

5voto

Ken Aspeslagh Punkte 11374

AppKit verwendet keine öffentliche API, um dieses Bild zu erhalten. Es ist mit _NSGetThemeImage, die ein Bild aus dem alten HIToolbox Appearance Manager Thema Ressourcen zieht und konvertiert es ein NSImage. Ich war nicht in der Lage, eine entsprechende öffentliche API zu finden.

Wenn Sie nachahmen wollen, wie AppKit das macht, verwenden Sie:

NSImage* _NSGetThemeImage(int num);

[menuitem setState:NSOnState];
[menuitem setOnStateImage:_NSGetThemeImage(155)];

Besser noch: Verwenden Sie diesen Code, um das NSImage zu erfassen, es in einer TIFF-Datei zu speichern und diese TIFF-Datei dann in Ihr Programm einzubinden. Auf diese Weise vermeiden Sie die Verwendung privater APIs im Versandcode. Ich bezweifle, dass Apple sich beschweren würde, dass Sie ihren Diamanten stehlen ;)

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X