OSXでマウスのドラッグでウィンドウを移動する

OSXでツールバーを非表示にしているNSWindowでドラッグで移動したい。
色々探したがなかなか情報が少なかったのでメモしておく。
NSWindowを継承したクラスを作成。
mouseDownで画面のどの場所をクリックしたのか記録。
mouseDraggedでウィンドウの位置をマウスの位置へ移動。マウスの現在位置は[NSEvent mouseLocation]にて取得可能。
それにmouseDown時の位置を加味すればOK.
ソースコードは以下のとおり。大変シンプルです。
 
[cpp]
#import
@interface SGWindow : NSWindow
@end
[/cpp]
[cpp]
#import “SGWindow.h”
@implementation SGWindow {
NSPoint beforePoint;
}
-(void)mouseDown:(NSEvent *)theEvent {
beforePoint = [theEvent locationInWindow];
}
– (void)mouseDragged:(NSEvent *)theEvent {
NSPoint moLo = [NSEvent mouseLocation];
[self setFrame:NSMakeRect(moLo.x – beforePoint.x, moLo.y – beforePoint.y, self.frame.size.width, self.frame.size.height) display:YES animate:NO];
}
@end
[/cpp]

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です