- ベストアンサー
[Active Basic]EditBoxにフォーカスがある時に、押されたキーを取得するには...
EditBox上にFocusがある場合に、押されたキー(Enterなど)を取得する場合は、どうしたらよいのでしょうか? すみませんが、知っている方、ご教授ください。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
EditBoxをサブクラス化しないとイベントを取得できないようです Dim hEdit as HWND, lpEditProc As VoidPtr をグローバル変数で用意します MainWndのデザイナで右クリック > イベントコード 『Create』を選択して[コーディング]ボタンをクリック Sub MainWnd_Create(ByRef CreateStruct As CREATESTRUCT) が作られるので hEdit = GetDlgItem( hMainWnd, EditBox1) lpEditProc = SetWindowLong( hEdit, GWL_WNDPROC, AddressOf( EditProc) as Long ) As VoidPtr を記述 Function EditProchWnd As HWND, dwMsg As DWord, wParam As WPARAM, lParam As LPARAM) As DWord if dwMsg = WM_KEYDOWN then EditBox1_KeyDown( wParam, lParam ) End If EditProc = CallWindowProc( lpEditProc, hWnd, dwMsg, wParam, lParam ) End Function Sub EditBox1_KeyDown( KeyCode As Long, flags As Long ) if KeyCode = 13 then ' Enterキーが押された場合 end if End Sub といった具合でしょう
お礼
いつも正確な解答ありがとうございます。 ・・・とても難しそうですね・・・ 理解できるように頑張ってみます。