Cocoa - Kein Dock Icon,kein MainMenu

Stalkingwolf

Registriert
Thread Starter
Mitglied seit
11.08.2002
Beiträge
2
Und zwar möchte ich ein Programm schreiben, was nur ein Menu in der rechten oberen Ecke von OSX läuft. Dort wo auch die Uhr, Batterie usw angezeigt wird.
Leider habe ich keine Ahnung wie ich das Dock Icon ausblende, kein MainMenu habe und mein NSMenu genau dort oben plaziere.
In meinem Buch "Cocoa Programming for Mac OS X" konnte ich nichts finden und im Netz genau so wenig. Hab nämlich nicht mal nen Schimmer wonach ich suchen soll.

Ich habe diverse Programm, LaunchBar, WeatherPop, die ein Menu dort ablegen, ich habe mir auch die Nib Files im Interface Builder angeschaut, wurde aber nicht schlau daraus.

Vielleicht kann mir ja hier jemand helfen.
Gruß Sven
 

mdev

Neues Mitglied
Mitglied seit
22.08.2002
Beiträge
24
Original geschrieben von Stalkingwolf
Und zwar möchte ich ein Programm schreiben, was nur ein Menu in der rechten oberen Ecke von OSX läuft.
[...]
Diese Art von Menu nennt sich "Menu Extra", und greift haeufig auf eine von Apple als "private" markierte API zurueck. Apple raet (aus sehr gutem Grund) davon ab, diese API zu nutzen.

Sicherer ist der Ansatz, sich per [NSStatusBar systemStatusBar] einen Zeiger auf die Statusanzeige des Systems zu holen, und dort dann die Dinge einzufuegen, die man haben will.

Um zu Verhindern, dasz die Applikation im Dock auftaucht gibt es zwei Moeglichkeiten, die beide in der Info.plist einzutragen sind:

- NSUIElement auf 1 setzen
Damit bekommt deine Applikation allerdins den Fokus (acceptFirstResponder auf NO setzen, um das zu Verhindern) Das ist allerdings von der Version des AppKits abhaengig, ich weisz nicht, ob und wo Apple das gefixt hat

- NSBGOnly auf 1 setzen
Damit bekommt deine Applikation den Fokus nicht, allerdings wirst du dann ein Problem haben, wenn du ein Fenster zum Beispiel fuer Voreinstellungen anzeigen willst, da du nicht FirstResponder werden kannst
 

Stalkingwolf

Registriert
Thread Starter
Mitglied seit
11.08.2002
Beiträge
2
thx.
habs anders gelöst.

myMenu = [[[NSStatusBar systemStatusBar] statusItemWithLength:NSVariableStatusItemLength] retain];
[myMenu setTitle:@"<haltEinTitel>"];
[myMenu setHighlightMode:YES];
[myMenu setMenu:<irgendEinMenü>];

aus dem .h:
NSStatusItem* myMenu;

kann ich zwar nicht mit Apfel verschieben, aber es funzt.

Sven