ここに私の問題があります。うまくいけば私は十分にそれを説明することができます。私のデスクトップは2x2サイズのモニター(2048,1152)です。Mac Mouse Coordinates!=ウィンドウ枠?
マウスクリックを生成するために補助デバイスを使用しようとしています。私のマウスのクリックは、(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
その結果、ポイント(私はポップアップウィンドウ上にホバーすることができます)をrectに配置しません。
なぜ私のポップアップウィンドウのためのrectですか、ポイントは離れてリモートで同じですか?どのように私はそれらを同じ座標空間で得ることができますか?
おかげで、Mac上で
あなたはそれが左下だと確信していますか? 'CGEventRef m = CGEventCreateMousEvent()'を作成し、y> screen heightの座標を左下の画面に表示します。 –
使用しているシステムによって異なります。 Cocoa(あなたのウィンドウの場所を取得するために使用している)は0を底として使用していますが、CocoaはマウスをCocoaから取得する方法を示すために私の投稿を編集します。 – ughoavgfhw