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

人气:821 发布:2022-10-16 标签: cursor cocoa objective-c macos

问题描述

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

要使其起作用,我需要知道如何在屏幕上的任何位置更改光标,而不仅仅是在某个窗口内(我已经让它起作用了)。

目前我有一个名为"MyCustomView"的类,它被分配给我的主窗口视图。我实现了如下所示的setCursorRects-method:

- (void) resetCursorRects {
    [super resetCursorRects];

    NSCursor *myCursor = [NSCursor crosshairCursor];
    CGRect screenRect = [[NSScreen mainScreen] frame];
    [self addCursorRect:screenRect cursor:myCursor];
}
它成功地将光标更改为十字准线,但仅在当前窗口内。我希望我的光标随着整个屏幕的变化而改变。我如何才能完成此任务?

谢谢你们的帮助,伙计们!

推荐答案

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

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

但其他窗口会更改它,所以我认为您需要一个透明度为0.0的窗口覆盖整个屏幕。

您可以通过设置窗位来执行此操作。[window setLevel:NSScreenSaverWindowLevel]

863