バックスペースや左キーを防止しても、マウスの左クリックでキャレット位置をフォーム文字列などにセットできてしまうので、これも防止する。
Window.hで、
OnLButtonUpを追加。
Window.cppで、
マウスの左ボタンが離された時のWM_LBUTTONUPの時、OnLButtonUpが呼ばれるようにする。
戻り値-1なら0を返して入力キャンセル。
ここでは0を返す。
CustomControl.cppでも、
WM_LBUTTONUPでOnLButtonUpを呼ぶ。
ConsoleCore.hにも、
OnLButtonUpを追加。
ConsoleCore.cppでは、
マウスの左ボタンが離された時、キャレットの現在位置が開始位置より前なら、強制的に開始位置に戻す。
押された時ではなく、離された時のイベントで実行するのがポイント。
(離された時じゃないとうまくいかない。)
この状態で、フォーム文字列を左クリックしても、
キャレットはせいぜい開始位置に戻る。
押しっぱなしの場合はフォーム文字列上にいるが、まあこの辺はこの時だけ非表示にするとかで対応できたと思う。
・マウスの左クリックでキャレット位置を変更されたときの動作 · bg1bgst333/VizCommand@3b136fe · GitHub