Mac覆盖窗口最大化按钮c ++

时间:2017-09-24 20:50:12

标签: c++ macos

我正在编写一个应用程序,我想更改Mac上“窗口最大化”按钮的默认行为。 由于很少有最新版本的MacOS默认将应用程序置于全屏模式,但它并不是我想要的。 我想要与Windows操作系统中相同的行为。

我正在使用C ++。 理想情况下我想要拦截一些窗口函数回调,禁用进入全屏,而只是最大化窗口到整个桌面工作区。 这该怎么做? 感谢

2 个答案:

答案 0 :(得分:0)

由于Cocoa没有本机C ++绑定,因此很难帮助您。如果您使用C ++编程,则必须使用某些第三方库,如Qt或SDL或类似的东西,但您忽略了告诉我们这是什么。

此外,macOS没有,也从来没有“最大化”功能,更不用说像Windows这样的功能了。它在Windows上有一个缩放操作,但这不是一回事。它只是一个自动调整大小,它不会将窗口置于锁定到新大小的模式,直到它恢复。

无论如何,要实现您想要的效果,您应该将窗口的collectionBehavior属性设置为包含NSWindowCollectionBehaviorFullScreenNone NSWindowCollectionBehaviorFullScreenPrimaryNSWindowCollectionBehaviorFullScreenAuxiliary。所以,在Objective-C(++)中:

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

如果您的窗口是在NIB中定义的,则可以在“属性”检查器中将其“全屏”行为设置为“无”。

答案 1 :(得分:0)

为NSWindow设置此功能可以解决问题:

   self.collectionBehavior|=NSWindowCollectionBehaviorFullScreenNone;