2017-04-06 5 views
0

このコードを使用すると、Yマウスの位置が間違っています。戻り値は(x、y + 20)です。Mac OSX上でウィンドウのクライアント内で実際のマウスの位置を取得する方法は?

int Height = int [[Window contentView] frame].size.height; 

int x = (int)[(NSEvent *)event locationInWindow].x; 

int y = Height - (int)[(NSEvent *)event locationInWindow].y; 

高さはウィンドウの高さだと思う: `タイトルバー+ rectクライアント。私は高さの本当の価値を望みます。

+0

あなたはウィンドウ内の座標は、あなたが「本物のマウスの位置」とはどういう意味ですか代わりにフレーム –

+0

の境界を試し座標系を持って取得したい場合は? '[event locationInWindow]'は本当です。 – Willeke

+0

@Pat_Morita bounds.originは、[[Window] contentView] bounds]を呼び出したとき、常に(0、0)に等しくなります...もっと詳しく教えてください。 –

答えて

1

座標をビューに変換できます。

- (void)mouseMoved:(NSEvent *)event 
    { 
     NSPoint locationInView = [self convertPoint:[event locationInWindow] 
              fromView:yourView]; 
    } 

(私の例ではマウスイベントで)何らかのイベントが発生していることを確認してください。有効になっていることを確認します。

[window setAcceptsMouseMovedEvents:YES]; 
+0

"convertPoint fromView"と "Window's contentView"は良い解決策です。ありがとうございます –

+0

これは '[self convertPoint:[event locationInWindow] fromView:nil]'ではありませんか? 「自己」がその見解です。 – Willeke

関連する問題