Mac OSX叠加

时间:2009-12-01 10:22:51

标签: objective-c cocoa hud

我如何在OSX中编写HUD类型叠加层。 我希望能够拥有一个应用程序,它将在不同应用程序窗口的某个位置显示文本。

因此,如果(其他应用程序)窗口移动,HUD部分将保持在另一个窗口的相同坐标。

2 个答案:

答案 0 :(得分:1)

对于窗口本身,使用无边框透明窗口(大量示例)和您自己的自定义视图来绘制重叠元素。

对于“其他应用程序'窗口”部分,没有公共API可以让您顺利地执行此操作。您使用Universal Access及其窗口位置/导航API,但它要求您的用户打开“启用辅助设备访问”(我认为它仍然无法以编程方式完成)。当窗户移动时,我不相信它“让你知道”,但我可能是错的。如果确实如此,它可能是一次性的“我现在就在这里”,所以你的叠加层可能无法跟上。我也不认为它会给你“窗口级别”,以确保你在任何给定的窗口/工作表/调色板“上方”。

唯一的另一个选择(与其他应用程序的窗口一起移动)是一个系统范围的,侵入性的黑客应用程序增强器(这是非常有争议的)。很容易弄错并破坏用户系统的稳定性(因此存在争议)。

答案 1 :(得分:0)

您可以使用未记录的CoreGraphics函数来跟踪窗口,请参阅http://code.google.com/p/undocumented-goodness/source/browse/trunk/CoreGraphics/CGSPrivate.h