2013-01-16 16 views
8

Zastanawiałem się, czy możliwe jest zrobienie mojego programu NSWindow powyżej absolutnie wszystkiego. I prąd ustawić poziom Okno do CGShieldingWindowLevel przy użyciu kodu ...Spraw, aby NSWindow był naprawdę najwyższym poziomem (powyżej myszy, nad kontrolą misji/wystawieniem).

[self setLevel:CGShieldingWindowLevel()]; 

... a to robi wielką pracę dla większości, ale nie jest to zupełnie wystarczy. Okno nie jest rysowane, gdy kontrola misji lub ekspozycja jest aktywna i jest rysowana poniżej myszy. Zastanawiałem się, czy można było stworzyć naprawdę "najwyższy poziom", który zostałby narysowany ponad wszystkimi tymi elementami.

Każda pomoc zostanie bardzo doceniona. Dzięki!

+1

Biorąc pod uwagę, że mysz jest jednym z najbardziej podstawowych aspektów każdego nowoczesnego komputera, byłbym zaskoczony, gdybyś mógł ... Ale ponieważ poziomy NSWindow są liczbami całkowitymi ... Czy próbowałeś dodać jeden? – CodaFi

+0

Dobry pomysł, ale niestety, wciąż nie ma. Tylko dla piekła sprawdziłem, jakie właściwie wartości całkowite tych stałych były. Okazuje się, że NSScreenSaverWindowLevel = 1000 i CGShieldingWindowLevel() = solidny 2147483629. Próbowałem dodać jeden do obu bezskutecznie, a także pomnożyć CGShieldingWindowLevel() przez dwa, co pozostawiło mnie bez okna. Jakieś inne pomysły? Dzięki! –

+3

Prawdziwie najwyższy poziom znajduje się powyżej powierzchni monitora. – Davyd

Odpowiedz

5

Jeśli chodzi o pytanie dotyczące Expose, prawdopodobnie nie ustawiłeś poprawnie zachowania kolekcji. Zrób podklasę NSWindow, a gdzieś w inicjalizacji zrobić coś wzdłuż następujące:

self.collectionBehavior = (NSWindowCollectionBehaviorStationary | NSWindowCollectionBehaviorIgnoresCycle); 

Jeśli chcesz, aby Twoje okno na wszystkich miejscach (czego zapewne nie) nie zapomnij także dodać NSWindowCollectionBehaviorCanJoinAllSpaces.

Jeśli chodzi o twoje pytanie dotyczące myszy, niestety nie sądzę, że istnieje sposób, aby narysować powyżej.

+0

Niesamowite, dzięki! Mimo że osiąga tylko 1/3 tego, czego potrzebowałem, zaczynam zdawać sobie sprawę, że pozostałe 2/3 nie są dokładnie możliwe ... –

+1

@AtlasWegman: Drugą częścią była mysz i co jeszcze? Dla wszystkich celów i celów uważam, że rysowanie nad myszą jest niemożliwe. Właśnie sprawdziłem inne narzędzie, takie jak twoje, Shady, i nie rysuje powyżej myszy. –

+0

Drugi duży (który zaczynam realizować jest niemożliwy z klasą NSWindow) przeciąga kontrolę Misji. Jakieś pomysły na to, jak coś takiego można osiągnąć? Dzięki! –

Powiązane problemy