如何在整个屏幕上更改光标? (不仅是当前视图/窗口)

时间:2012-10-20 14:49:33

标签: objective-c macos cocoa cursor

我目前正在学习目标c,我正在尝试编写一些简单的应用程序来帮助我学习。现在,我正在尝试创建一个应用程序,让我可以在屏幕上的任何位置测量某个区域。 (类似于:https://addons.mozilla.org/de/firefox/addon/measureit/

为了实现这一点,我需要知道如何在屏幕上的任何位置更改光标,不仅仅是在某个窗口内(我已经开始工作了)。

目前我有一个名为“MyCustomView”的类,它被分配到我的主窗口视图。我实现了resetCursorRects方法,如下所示:

- (void) resetCursorRects {
    [super resetCursorRects];

    NSCursor *myCursor = [NSCursor crosshairCursor];
    CGRect screenRect = [[NSScreen mainScreen] frame];
    [self addCursorRect:screenRect cursor:myCursor];
}

它成功地将我的光标更改为十字准线,但仅在当前窗口内。我想让我的光标改变所有的屏幕。我怎么能做到这一点?

谢谢你的帮助,伙计们!

1 个答案:

答案 0 :(得分:1)

您可以创建NSCursor实例,然后调用set方法

[[[NSCursor alloc] initWithImage:[NSImage imageNamed:@"myCursor.png"] hotSpot:NSZeroPoint] set]

但是其他窗口会改变它,所以我认为你需要一个覆盖所有屏幕的0.0不透明度的窗口。

您可以通过设置窗口级别来完成。 [window setLevel:NSScreenSaverWindowLevel]