我正在编写一个应用程序,我想更改Mac上“窗口最大化”按钮的默认行为。 由于很少有最新版本的MacOS默认将应用程序置于全屏模式,但它并不是我想要的。 我想要与Windows操作系统中相同的行为。
我正在使用C ++。 理想情况下我想要拦截一些窗口函数回调,禁用进入全屏,而只是最大化窗口到整个桌面工作区。 这该怎么做? 感谢
答案 0 :(得分:0)
由于Cocoa没有本机C ++绑定,因此很难帮助您。如果您使用C ++编程,则必须使用某些第三方库,如Qt或SDL或类似的东西,但您忽略了告诉我们这是什么。
此外,macOS没有,也从来没有“最大化”功能,更不用说像Windows这样的功能了。它在Windows上有一个缩放操作,但这不是一回事。它只是一个自动调整大小,它不会将窗口置于锁定到新大小的模式,直到它恢复。
无论如何,要实现您想要的效果,您应该将窗口的collectionBehavior
属性设置为包含NSWindowCollectionBehaviorFullScreenNone
和不 NSWindowCollectionBehaviorFullScreenPrimary
或NSWindowCollectionBehaviorFullScreenAuxiliary
。所以,在Objective-C(++)中:
window.collectionBehavior &= ~(NSWindowCollectionBehaviorFullScreenPrimary | NSWindowCollectionBehaviorFullScreenAuxiliary);
window.collectionBehavior |= NSWindowCollectionBehaviorFullScreenNone;
如果您的窗口是在NIB中定义的,则可以在“属性”检查器中将其“全屏”行为设置为“无”。
答案 1 :(得分:0)
为NSWindow设置此功能可以解决问题:
self.collectionBehavior|=NSWindowCollectionBehaviorFullScreenNone;