gpt4 book ai didi

macos - 确保窗口在 OS X Cocoa 上显示在屏幕上

转载 作者:行者123 更新时间:2023-12-03 16:37:14 24 4
gpt4 key购买 nike

假设我将窗口的位置保存在我的首选项文件中。现在,用户将窗口移动到第二个监视器,然后退出我的应用程序。然后他断开第二个显示器的连接并再次启动我的应用程序。现在我的应用程序想要恢复窗口的保存位置。但如果一味地恢复旧的窗口坐标,窗口就会离屏。

我曾经在我的 Carbon 应用程序中使用 ConstrainWindowToScreen,但现在我将其移植到 Cocoa,我找不到与之等效的工具。

文档表明,以某种方式,Cocoa 会自动阻止这种情况的发生。虽然当窗口打开时显示器发生变化时可能会出现这种情况,但在我自己存储窗口位置并在启动时重新打开窗口时恢复它们的情况下,这是行不通的。我需要按需调用 Cocoa 的神奇功能,但是如何调用呢?

(注意:我知道我可以迭代所有可用的屏幕,但是如果我想万无一失,那么自己编写是相当痛苦的。不过,如果你可以提供一个完整的 C 或 ObjC 函数来解决这个问题方式,这也将不胜感激。)

最佳答案

请参阅 NSWindow Class Reference 中的“管理用户默认值中的窗口框架”部分。 。这些方法可确保窗口完全放置在屏幕上。

如果您想自己保存和恢复窗口位置(作为字符串),请使用 -stringWithSavedFrame-setFrameFromString:

使用 -saveFrameUsingName:-setFrameUsingName 让 NSWindow 在给定窗口名称的情况下以用户默认值保存和恢复其帧。

关于macos - 确保窗口在 OS X Cocoa 上显示在屏幕上,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16779916/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com