VizCommand #21 マウスの左クリックでキャレット位置を変更されたときの動作

バックスペースや左キーを防止しても、マウスの左クリックでキャレット位置をフォーム文字列などにセットできてしまうので、これも防止する。

Window.hで、

OnLButtonUpを追加。

Window.cppで、

マウスの左ボタンが離された時のWM_LBUTTONUPの時、OnLButtonUpが呼ばれるようにする。
戻り値-1なら0を返して入力キャンセル。

ここでは0を返す。

CustomControl.cppでも、

WM_LBUTTONUPでOnLButtonUpを呼ぶ。

ConsoleCore.hにも、

OnLButtonUpを追加。

ConsoleCore.cppでは、

マウスの左ボタンが離された時、キャレットの現在位置が開始位置より前なら、強制的に開始位置に戻す。
押された時ではなく、離された時のイベントで実行するのがポイント。
(離された時じゃないとうまくいかない。)

f:id:BG1:20170503220524p:plain

この状態で、フォーム文字列を左クリックしても、

f:id:BG1:20170503220549p:plain

キャレットはせいぜい開始位置に戻る。
押しっぱなしの場合はフォーム文字列上にいるが、まあこの辺はこの時だけ非表示にするとかで対応できたと思う。

・マウスの左クリックでキャレット位置を変更されたときの動作 · bg1bgst333/VizCommand@3b136fe · GitHub