2011-08-25 90 views
4

我試圖創建一個停靠在OS X菜單欄下方屏幕頂部的工具欄。我可以更改NSScreen可見幀嗎?

我希望沒有其他應用程序能夠在應用程序最大化時覆蓋我的應用程序。我可以使用NSScreen的可見框架方法獲得可見的框架尺寸,但是我可以調整可見框架以忽略應用程序的大小和位置嗎?

+0

什麼窗口級別,你分配給你的窗口(S)? –

+0

我將窗口級別分配爲:NSPopUpMenuWindowLevel。這引起了我的窗口是在其他窗口的頂部,但是當我最大限度地發揮他們去我的窗口下面的其他窗口,我想他們停在我的窗口的底部,而不是去我的應用程序下方。就像停靠站如何阻止窗戶在最大化時覆蓋它一樣。 –

回答

4

簡單的答案是,不,你不能。我認爲改變屏幕visibleRect的唯一方法是將代碼注入AppKit並調整方法。

即使這樣,它可能不是你想要的,因爲這種方法可能不是什麼蘋果使用確定的「安全區」的窗口,幾乎可以肯定不會與Carbon程序工作。

你用窗口級別做什麼都不會改變這一點。

如果您檢測到它們的框架發生了變化,使它們與您的工具欄窗口重疊,則使用Accessibility框架重新定位窗口。不幸的是,我認爲你可能需要使用輪詢。

+0

感謝至少我現在知道,知道是戰鬥的一半 –

1

嘗試將窗口的級別設置爲NSDockWindowLevel

這可能無法正常工作,具體取決於系統是否減去該級別上的所有窗口或者僅刪除Dock的窗口,但值得一試。

+0

這和NSPopUpMenuWindowLevel的功能相同。也許無法爲Mac創建工具欄或任務欄,這些工具欄或任務欄可能會改變操作系統的工作區域,我以前從未見過。 –