• ベストアンサー

[Active Basic]EditBoxにフォーカスがある時に、押されたキーを取得するには...

EditBox上にFocusがある場合に、押されたキー(Enterなど)を取得する場合は、どうしたらよいのでしょうか? すみませんが、知っている方、ご教授ください。

質問者が選んだベストアンサー

  • ベストアンサー
  • redfox63
  • ベストアンサー率71% (1325/1856)
回答No.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 といった具合でしょう

if-so-at
質問者

お礼

いつも正確な解答ありがとうございます。 ・・・とても難しそうですね・・・ 理解できるように頑張ってみます。

関連するQ&A