プロが教えるわが家の防犯対策術!

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

A 回答 (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
といった具合でしょう
    • good
    • 0
この回答へのお礼

いつも正確な解答ありがとうございます。

・・・とても難しそうですね・・・
理解できるように頑張ってみます。

お礼日時:2008/10/13 11:27

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!