這是我的問題。希望我可以解釋得很好。我的桌面是一個2x2的顯示器(2048,1152)。Mac鼠標座標!=窗框?
我正在嘗試使用輔助設備來生成鼠標點擊。假設(0,0)是我整個桌面區域的左上角,我的鼠標點擊應該在座標(1600,1407)-ish(在「平移按鈕」上)。它將鼠標移動到正確的位置,但是當我執行CGREctContainsPoint()
時),因此它給了我NO
。
由我的彈出窗口給出的矩形(框架)的起源是(1558,-406)?所以數學是正確的CGREctContainsPoint()
,但窗口的框架應該包含點。 (甚至更多,我可以看到鼠標光標在窗口上。)
爲什麼?是因爲它是一個小孩窗戶嗎? (我的桌面的中心是在圖像的中心,每個窗口是一個不同的背景顏色。)
我已經使用了以下嘗試:
NSRect pFrame = [_popupWindow frame];
NSPoint pOrigin = pFrame.origin;
NSPoint correctedOrigin = [[_popupWindow parentWindow] convertBaseToScreen:pOrigin];
pFrame.origin = correctedOrigin;
但是這給了我:
... Rect {{1488, -1529}, {439, 306}}, Point {1556.17, 1314.76}, InRect 0
作爲一個結果,它仍然沒有放置點(我可以看到懸停在彈出窗口上)的矩形。
爲什麼我的彈出窗口的矩形和點甚至不是相同的?我怎樣才能讓他們在同一個座標「空間」?
謝謝,
你確定它的左下角?如果我創建了'CGEventRef m = CGEventCreateMousEvent()',並且我將它傳遞給一個座標,其中y>屏幕高度顯示在左下角的屏幕中。 – 2010-12-20 20:20:22
這取決於你使用的是什麼系統。 Carbon(你用來獲取位置的)使用top作爲0,而Cocoa(你用來獲取窗口位置)使用bottom作爲0.我將編輯我的帖子以顯示如何從可可中獲得鼠標。 – ughoavgfhw 2010-12-20 20:51:50