自定义NSCursor不适用于所有应用程序

时间:2011-08-06 18:30:51

标签: cocoa osx-snow-leopard nscursor

我写了一个Cocoa程序,在按下按钮后更改光标。具体地,光标包括图像而不是指针。我使用以下命令设置它:

NSImage *tmpImage = [NSImage imageNamed:@"pointer"];
NSCursor *pointer = [[NSCursor alloc] initWithImage:tmpImage hotSpot:NSMakePoint(10.0, 10.0)];
[pointer set];

这有效,光标也能正确更改。但是,此更改并不适用于所有应用程序。例如,当我在幻灯片模式下切换到Keynote演示时,光标会变回箭头。当我切换到演示文稿的PDF全屏显示时,光标变为一只手(我相信这些是相应应用程序设置的默认光标)。

我的问题是:有没有办法覆盖这些并只保留我的所有应用程序的自定义光标?即使在Keynote幻灯片和PDF全屏视图中,我也希望保留更改的光标。有什么想法吗?

谢谢!

1 个答案:

答案 0 :(得分:0)

无法更改其他应用程序的光标,至少不使用公共API。

这样做的唯一方法是创建一个自定义的无边框窗口,它只显示光标的图像,然后使用CoreGraphics API隐藏光标,只需在鼠标移动时移动窗口。这大概是Apple如何在辅助功能系统首选项中打开大光标。