矢印、enterキーでのtext間移動?
Posted: 2006年10月07日(土) 21:09
どもども、初心者です。早速ですが矢印・enterキーにて画面上のtext・edit等の欄を移動する方法を教えてください。
例えば、text欄①入力後enterキーにて次の入力欄②に移動し、上または左矢印キーにて①に戻る。
例えば、text欄①入力後enterキーにて次の入力欄②に移動し、上または左矢印キーにて①に戻る。
コード: 全て選択
' TODO: この位置にグローバルな変数、構造体、定数、関数を定義します。
コード: 全て選択
Dim lpOldWndProc[1] As VoidPtr
コード: 全て選択
Sub MainWnd_Create(ByRef CreateStruct As CREATESTRUCT)
lpOldWndProc[0]=SetWindowLong(GetDlgItem(hMainWnd,EditBox1),GWL_WNDPROC,AddressOf(MainWndProc) As LONG_PTR) As VoidPtr
lpOldWndProc[1]=SetWindowLong(GetDlgItem(hMainWnd,EditBox2),GWL_WNDPROC,AddressOf(MainWndProc) As LONG_PTR) As VoidPtr
End Sub
コード: 全て選択
Sub MainWnd_Destroy()
SetWindowLong(GetDlgItem(hMainWnd,EditBox1),GWL_WNDPROC,lpOldWndProc[0] As LONG_PTR)
SetWindowLong(GetDlgItem(hMainWnd,EditBox2),GWL_WNDPROC,lpOldWndProc[1] As LONG_PTR)
xxx_DestroyObjects() 'xxxにはプロジェクト名が入る
PostQuitMessage(0)
End Sub
コード: 全て選択
Function MainWndProc(hWnd As HWND, dwMsg As DWord, wParam As WPARAM, lParam As LPARAM) As DWord
' TODO: この位置にウィンドウメッセージを処理するためのコードを記述します。
Select Case hWnd
Case GetDlgItem(hMainWnd,EditBox1)
If dwMsg=WM_KEYDOWN And wParam=VK_RETURN Then
SetFocus(GetDlgItem(hMainWnd,EditBox2))
End If
MainWndProc=CallWindowProc(lpOldWndProc[0],hWnd,dwMsg,wParam,lParam)
Case GetDlgItem(hMainWnd,EditBox2)
If dwMsg=WM_KEYDOWN And (wParam=VK_LEFT Or wParam=VK_UP) Then
SetFocus(GetDlgItem(hMainWnd,EditBox1))
End If
MainWndProc=CallWindowProc(lpOldWndProc[1],hWnd,dwMsg,wParam,lParam)
Case Else
' イベントプロシージャの呼び出しを行います。
MainWndProc=EventCall_MainWnd(hWnd,dwMsg,wParam,lParam)
End Select
End Function