2013-01-16 3 views
8

Ich frage mich, ob es möglich ist, meine NSWindow Show über absolut alles zu machen. I Strom aus dem Fenster Ebene CGShieldingWindowLevel setzen Sie den Code ...Machen Sie NSWindow wirklich zum höchsten Level (über Maus, über Mission Control/Expose)

[self setLevel:CGShieldingWindowLevel()]; 

... und dies hat eine große Aufgabe für den größten Teil, aber es ist nicht genug. Das Fenster wird nicht gezeichnet, wenn Missionssteuerung oder Belichtung aktiv ist, und es wird unter die Maus gezogen. Ich habe mich gefragt, ob es möglich ist, eine wirklich "Top Level" zu schaffen, die über all diesen Elementen gezeichnet wäre.

Jede Hilfe würde sehr geschätzt werden. Vielen Dank!

+1

Wenn man bedenkt, dass die Maus einer der grundlegendsten Aspekte eines modernen Computers ist, würde ich mich wundern, wenn Sie könnten ... Aber da die NSWindow-Ebenen ganze Zahlen sind ... Haben Sie versucht, eine hinzuzufügen? – CodaFi

+0

Gute Idee, aber leider immer noch ein No-Go. Nur zur Hölle prüfte ich, was die eigentlich ganzzahligen Werte dieser Konstanten waren. Es ergibt sich NSScreenSaverWindowLevel = 1000, und CGShieldingWindowLevel() = eine satte 2147483629. Ich habe versucht, eins zu beiden ohne Erfolg, sowie CGShieldingWindowLevel() um zwei zu multiplizieren, die mich ohne Fenster überhaupt verlassen. Irgendwelche anderen Ideen? Vielen Dank! –

+3

Wirklich das höchste Niveau ist über der Oberfläche des Monitors. – Davyd

Antwort

5

In Bezug auf Ihre Frage zu Expose haben Sie wahrscheinlich Ihr Sammelverhalten nicht richtig eingestellt. Machen Sie eine Unterklasse von NSWindow, und irgendwo in Ihrer Initialisierung etwas tun, entlang der folgenden:

self.collectionBehavior = (NSWindowCollectionBehaviorStationary | NSWindowCollectionBehaviorIgnoresCycle); 

Wenn Sie auf allen Räumen Fenster wollen (die Sie wahrscheinlich tun) vergessen Sie nicht, auch NSWindowCollectionBehaviorCanJoinAllSpaces hinzuzufügen.

In Bezug auf Ihre Frage über die Maus, glaube ich leider nicht, es gibt eine Möglichkeit, darüber zu zeichnen.

+0

Super, danke! Obwohl dies nur 1/3 von dem, was ich brauchte, erreicht, beginne ich zu erkennen, die anderen 2/3 sind nicht genau möglich ... –

+1

@AtlasWegman: Der andere Teil war die Maus, und was noch? Für alle Absichten und Zwecke glaube ich, dass das Zeichnen über der Maus unmöglich ist. Ich habe gerade ein anderes Utility wie deins überprüft, Shady, und es zeichnet nicht über der Maus. –

+0

Die andere große (die ich mit der NSWindow-Klasse nicht realisieren kann) ist die Mission Control. Irgendwelche Ideen, wie so etwas erreicht werden könnte? Vielen Dank! –