ab.com コミュニティ
https://www.activebasic.com/forum/

KeyDown
https://www.activebasic.com/forum/viewtopic.php?t=4618
ページ 11

作成者:  monta [ 2017年5月30日(火) 19:10 ]
記事の件名:  KeyDown

わからなくて悩んでいます。よろしくご教授ください。
Sub MainWnd_KeyDown(KeyCode As Long, flags As Long)
これのKeyCodeで矢印キーボタンを読んでいます。
shfitキー+矢印キーの場合はどう読めば良いでしょうか。

作成者:  rikaeigo [ 2017年6月02日(金) 21:58 ]
記事の件名:  Re: KeyDown

入力フォーカスがウィンドウのボタンなどのコントロールに無ければ、これで判断できると思います。

If GetAsyncKeyState(VK_SHIFT) < 0 Then
If GetAsyncKeyState(37) < 0 Then
'●●●●●● Shift + ←押された
OutputDebugString("Shift + ←押された")

ElseIf GetAsyncKeyState(38) Then '↑
'●●●●●● Shift + ↑押された
OutputDebugString("Shift + ↑押された")

EndIf
EndIf

-----------------------------------------------------------------

フォーカスがボタンなどに行ってしまう場合は

Createなどでタイマーをセットして、
SetTimer(hMainWnd,0,100,0) '100の所がタイマー処理呼び出し間隔

Sub MainWnd_Timer(TimerID As DWord)

If GetAsyncKeyState(VK_SHIFT) < 0 Then
If GetAsyncKeyState(37) < 0 Then
'●●●●●● Shift + ←押された
OutputDebugString("Shift + ←押された")

ElseIf GetAsyncKeyState(38) Then '↑
'●●●●●● Shift + ↑押された
OutputDebugString("Shift + ↑押された")

EndIf

EndIf

End Sub

こうすればOKです。

ページ 11 全ての表示時間は UTC+09:00 です
Powered by phpBB® Forum Software © phpBB Limited
https://www.phpbb.com/