マウスカーソルが元に戻る件マウスカーソルが元に戻る件

<< | コメント(0) | トラックバック(0) このエントリーを含むはてなブックマーク >>

SetCursor関数の話。

WindowsAPIのSetCursorを使ってみたところ、一瞬だけカーソルが変わって元に戻った。
結果からいうと、マウスに動きがあるとWindowClassに登録されたカーソルに更新される模様。


解決法として、WindowClassのhCursorプロパティにNULLをセットしておいて、デフォのマウスカーソルもSetCursorで登録するとよい。



さらに細かい話をすると。
入力キャプチャされていない時にカーソルが移動すると、WM_SETCURSORっていうウィンドウメッセージが送信される。

これは、クライアントエリア外にカーソルがある場合はWindowsデフォルトのカーソルに。
クライアントエリア内にカーソルがある場合はWindowの生成時にWindowClassに登録されたカーソルに変更するために存在します。

・こっからは未確認
このWM_SETCURSORがDefWindowProc関数内で処理されると上記の動作が行われるので、WM_SETCURSORがきた時はDefWindowProc関数に飛ばさなければ戻らないのかもしれない。

でもこのWM_SETCURSORはウィンドウのサイズ変更時や、テキストボックスの上に来たときのカーソル変更にも使用されてるので、止めるとそれらの変更も止められるかも。

未確認だけどね( ´-`)

カーソルを変更したいときだけフラグを立てておいて、WM_SETCURSORの中でフラグで判断するのがいいのだろうか?

・検索用文字列
マウスカーソルの変更、一瞬で戻る、一瞬だけ出る、変更されない、変わらない、すぐに戻る

トラックバック(0)

トラックバックURL: http://exe.tyo.ro/mt/mt-tb.cgi/670

コメントする

2014年10月

      1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31  

月別 アーカイブ

2014年
2013年
2012年
2011年
2010年
2009年
2008年
2007年