2011-07-25 20 views
1

我有一個窗口中間有一個大的NSView的應用程序,並在該視圖中,我想啓動並顯示「Calculator.app」,使它被限制在該NSView和Calculator.app的窗口大小被強制是這個NSView的大小。這可能嗎?你會怎麼做?如何在OS X上的現有NSView中打開新的應用程序?

(用於TextEdit.app等同樣的問題,我想這對於一般情況,但只是使用這些應用程序作爲例證)

回答

2

這是不可能的。當您啓動應用程序時,無法限制其對顯示器的使用。應用程序創建窗口和窗口不會進入視圖。

(好吧,不可行可笑但不不可能的。你可以說視圖中運行一個虛擬機,或者加載應用程序,並攔截其使用的可可庫。這些都不是合理的選擇。)

但是:如果您專門編寫應用程序來執行此操作,可以通過多種方法將其顯示嵌入到另一個應用程序的視圖中。

+0

你能提供指針嗎?我很樂意學習如何... – SteAp

+0

我會這樣做的方式是與IPC。使用'shm_open'(和'ftruncate','mmap'),你可以創建一個共享內存區域。然後,客戶端應用程序將像素寫入共享內存,服務器應用程序將這些像素髮送到顯示器。你需要一種方法來同步這兩個進程,儘管這不是必須的。您甚至可以將Cocoa小部件繪製到任意區域的內存中,並將事件序列化爲跨進程邊界發送它們,但它變成了很多代碼。 –

相關問題