前回で方向キーを縦型テキストボックスに対応させることはできましたが、フォーカスを失うという問題が残っています。
他にも問題があり、メッセージを拾うのはよいのですが、アプリ終了時に御呪いは必要なので、下記の通り記載しました。
Private Sub _Disposed(sender As Object, e As System.EventArgs) Handles Me.Disposed
lpord = Class_API.SetWindowLong(hwndEdit, Class_API.GWL_WNDPROC, lpord)
End Sub
方向キーについても、専用の関数を作成し、それを呼び出す形に修正をかけることで整理。
''' <summary>
''' 方向キーを縦型に対応させるための関数
''' </summary>
''' <param name="uMsg">メッセージ</param>
''' <param name="wParam">パラメータ</param>
''' <returns>True:方向キーの変更を実施 False:方向キーの変更を未実施</returns>
''' <remarks></remarks>
Private Function KeyCheck(ByVal uMsg As IntPtr, ByRef wParam As IntPtr) As Boolean
If uMsg = API.Msg.WM.WM_KEYUP Or uMsg = API.Msg.WM.WM_KEYDOWN Then
Select Case wParam
Case Windows.Forms.Keys.Up
wParam = Windows.Forms.Keys.Left
Case Windows.Forms.Keys.Down
wParam = Windows.Forms.Keys.Right
Case Windows.Forms.Keys.Left
wParam = Windows.Forms.Keys.Down
Case Windows.Forms.Keys.Right
wParam = Windows.Forms.Keys.Up
Case Else
Return False
End Select
Return True
Else
Return False
End If
End Function
さて、ここからが長い戦いがはじまりです。