objective-c - 使窗口弹出进出屏幕边缘

标签 objective-c cocoa macos

我正在尝试为我的 Mac 在 Objective-C 中为 Windows 重写一个应用程序,我希望能够做一些类似 Mac 的热点问题。如果我将鼠标移到屏幕左侧,它会显示一个窗口,如果我将鼠标移到窗口位置之外,该窗口将再次隐藏。 (窗口将被推到屏幕的左侧)。

有谁知道我在哪里可以找到有关如何执行此操作的一些演示代码(或引用),或者至少如何判断鼠标的位置,即使当前应用程序不在顶部。 (不知道怎么说,太习惯 Windows 世界了)。

谢谢

-布拉德

最佳答案

您将要在屏幕边缘实现一个不可见的窗口,并设置窗口顺序以使其始终位于顶部。然后,您可以在此窗口中监听鼠标移动事件。

要将窗口设置为不可见并位于顶部,使窗口子类使用如下调用:

[self setBackgroundColor:[NSColor clearColor]];
[self setExcludedFromWindowsMenu:YES];
[self setCanHide:NO];
[self setLevel:NSScreenSaverWindowLevel];
[self setAlphaValue:0.0f];
[self setOpaque:NO];
[self orderFrontRegardless];

然后,开启鼠标移动事件,

[self setAcceptsMouseMovedEvents:YES];

将导致窗口调用:

- (void)mouseMoved:(NSEvent *)theEvent
{
   NSLog(@"mouse moved into invisible window.");
}

希望这足以让您开始。

-肯

关于objective-c - 使窗口弹出进出屏幕边缘,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1994360/

相关文章:

macos - NSDocument获取实际保存路径?

javascript - 如何在 Chrome 中查看带有不安全和安全请求的 Web 应用程序?

ios - 持久本地通知 iOS

objective-c - sender.selected = !sender.isSelected 到底做了什么导致我的按钮切换?

objective-c - 如何在 Objective-C 中使用自定义委托(delegate)

objective-c - 我可以制作 NSTableView 的精确副本吗?

cocoa - 复杂iPad应用程序中的MVC设计模式: is one fat controller acceptable?

macos - 适用于 OS X 的 ABAddressBook/ABSource

macos - zsh 函数在 OSX 上设置 docker 环境

iphone - 如何优化从 uicollectionview 的 URL 加载图像?