掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
コマンドボタンのフォーカス移動について (VB6) (ID:123603)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
APIを使って無理矢理に実装してみた場合。 '--- 標準モジュール Option Explicit Private Declare Function CallNextHookEx Lib "user32" (ByVal hHook As Long, ByVal nCode As Long, ByVal wParam As Long, ByVal lParam As Long) As Long Private Declare Function UnhookWindowsHookEx Lib "user32" (ByVal hHook As Long) As Long Private Declare Function SetWindowsHookEx Lib "user32" Alias "SetWindowsHookExA" (ByVal idHook As Long, ByVal lpfn As Long, ByVal hmod As Long, ByVal dwThreadId As Long) As Long Private Const WH_KEYBOARD As Long = 2 Private mlngHook As Long Public Sub Hook() mlngHook = SetWindowsHookEx(WH_KEYBOARD, AddressOf KeyboardProc, 0&, App.ThreadID) End Sub Public Sub Unhook() UnhookWindowsHookEx mlngHook mlngHook = 0 End Sub Public Function KeyboardProc(ByVal nCode As Long, ByVal wParam As Long, ByVal lParam As Long) As Long Static blnReEnter As Boolean If wParam <> vbKeyRight And _ wParam <> vbKeyLeft And _ wParam <> vbKeyUp And _ wParam <> vbKeyDown Then KeyboardProc = CallNextHookEx(mlngHook, nCode, wParam, lParam) ElseIf blnReEnter = False Then blnReEnter = True KeyboardProc = 1 Else On Error Resume Next Form1.ArrowKeyClick wParam KeyboardProc = 1 blnReEnter = False End If End Function '--- Form1 Option Explicit Private Sub Form_Load() Hook End Sub Private Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer) Unhook End Sub Public Sub ArrowKeyClick(ByVal KeyCode As KeyCodeConstants) ' [Command1] ←→ [Command2] ' ↑ ↑ ' ↓ ↓ ' [Command3] ←→ [Command4] If KeyCode = vbKeyRight Then If ActiveControl Is Command1 Then Command2.SetFocus ElseIf ActiveControl Is Command3 Then Command4.SetFocus End If ElseIf KeyCode = vbKeyLeft Then If ActiveControl Is Command2 Then Command1.SetFocus ElseIf ActiveControl Is Command4 Then Command3.SetFocus End If ElseIf KeyCode = vbKeyDown Then If ActiveControl Is Command1 Then Command3.SetFocus ElseIf ActiveControl Is Command2 Then Command4.SetFocus End If ElseIf KeyCode = vbKeyUp Then If ActiveControl Is Command3 Then Command1.SetFocus ElseIf ActiveControl Is Command4 Then Command2.SetFocus End If End If End Sub
←解決時は質問者本人がここをチェックしてください。
戻る
掲示板システム
Copyright 2020 Takeshi Okamoto All Rights Reserved.