2017-09-24 58 views
0

我正在編寫一個應用程序,並且我想更改Mac上Window Maxize按鈕的默認行爲。 由於幾乎沒有最新版本的MacOS,它默認將應用程序置於全屏模式,但這不是我想要的。 我想要與Windows操作系統中的行爲相同。Mac覆蓋窗口最大化按鈕C++

我正在使用C++。 理想情況下,我想要攔截一些窗口函數回調,禁用進入全屏,而不是最大化整個桌面工作區的窗口。 如何做到這一點? 謝謝

回答

0

由於Cocoa沒有本地C++綁定,所以很難爲您提供幫助。如果你使用C++進行編程,你必須使用像Qt或SDL之類的第三方庫或類似的東西,但是你忽略告訴我們這是什麼。另外,macOS沒有,也從來沒有「最大化」的功能,更不用說像Windows那樣了。它在窗口上有縮放操作,但這不是一回事。它只是一個自動調整大小,它不會將窗口置於鎖定到新大小的模式下,直到它恢復。

總之,要達到你想要什麼,你應該設置窗口的collectionBehavior屬性包括NSWindowCollectionBehaviorFullScreenNoneNSWindowCollectionBehaviorFullScreenPrimaryNSWindowCollectionBehaviorFullScreenAuxiliary。因此,在Objective-C(++):

window.collectionBehavior &= ~(NSWindowCollectionBehaviorFullScreenPrimary | NSWindowCollectionBehaviorFullScreenAuxiliary); 
window.collectionBehavior |= NSWindowCollectionBehaviorFullScreenNone; 

如果在NIB定義你的窗口,你可以設置它的全屏行爲沒有在屬性檢查器。

+0

謝謝,只是能弄清楚我自己。 BTW。我使用我自己的遊戲引擎 - http://esenthel.com/ – Esenthel

0

設置此爲NSWindow沒有的伎倆:

self.collectionBehavior|=NSWindowCollectionBehaviorFullScreenNone;