2013-03-21 33 views
1

這是放大鏡玻璃左上角:如何在Mac OS的拾色器上實現放大鏡玻璃?

我已經試過2種方法,但都失敗了。

  1. 一旦放大鏡玻璃被點擊,創建一個新的光標(用放大鏡玻璃圖像的光標,或crossfair,等等),並推動它,然後調用 nextEventMatchingMask:untilDate:inMode:dequeue:NSApplication吃的所有事件,直到 我們獲得NSLeftMouseUp事件。它確實有效,但並不完美,其他窗口或應用程序將在點擊點位於原點窗口之外時向前排序。

  2. 創建一個NSColorPanel,嘗試向面板發送一個假的鼠標單擊事件。它在色輪上工作,但一旦將事件位置更改爲放大鏡玻璃按鈕,則無效。

[1]中的問題:如何禁止所有系統鼠標事件發送,直到用戶單擊左鍵?

[2]中的問題:這可能嗎?

感謝您的回覆。

+0

目前尚不清楚您正在嘗試做什麼。 – bneely 2013-03-21 02:47:07

+1

@bneely,我認爲他很清楚他想要什麼。我猜測那個放大鏡實際上是一個覆蓋光標的不透明的NSWindow(或者光標圖像被彈出到十字光標)。 – CodaFi 2013-03-21 02:51:37

回答

2

石英事件,如果我們想阻止系統事件調度服務可以被使用,但有2個問題是:

  1. 輔助功能應該由用戶啓用;
  2. 在沙盒下禁止Quartz事件服務。

不可能使方法1成功。

受@CodaFi的啓發,我決定使用NSWindow的子類來實現它。在gitbub https://github.com/wentingliu/ScreenPicker上創建一個示例項目,然後檢查它。