1

我正在(重新)编写一个小应用程序来控制 USB 设备。我希望该应用程序的窗口始终完全可见。因此,当您在窗口周围移动时,当底部碰到屏幕底部或其中一个侧面碰到屏幕侧面时,它就会停止移动。

这是可能吗?

4

3 回答 3

2

是的,这是可能的。带有标题栏的普通 NSWindows 会限制它们自己的框架以不允许窗口顶部离开屏幕顶部。这是在-[NSWindow constrainFrameRect:toScreen:] 你可以覆盖这个方法来约束你想要的框架。

于 2012-10-20T13:35:19.260 回答
0

如果要阻止用户自由移动窗口,只需制作一个没有标题栏的自定义窗口即可。有一个标题栏向用户表明窗口可以移动,所以这里的解决方案是没有一个。然后,无法控制它的移动。您需要提供自己的控件来关闭窗口。

于 2012-10-22T14:54:09.727 回答
0

由于Ken Aspeslagh提供的代码示例不再通过 Dropbox 链接提供,我认为分享我的解决方案会很有用。对于我的项目,我只需要担心屏幕的底部和右侧,但其他人应该能够适应这一点以解决屏幕的顶部和左侧。

- (NSRect)constrainFrameRect:(NSRect)frameRect toScreen:(NSScreen *)screen
{
    if (((self.frame.origin.x + self.frame.size.width) > screen.frame.size.width) && (screen.frame.size.width > 0))
    {
        frameRect.origin.x = (screen.frame.size.width - self.frame.size.width);
    }

    if (self.frame.origin.y < 0)
    {
        frameRect.origin.y = 0;
    }

    return frameRect;
}
于 2019-06-29T15:53:08.827 回答