とっておきの「まかない飯」を教えて下さい!

(VB6/WindowsXP)
DoubleClickイベント発生時にCtrlキーが押下されているかどうかを判定するにはどうすればいいでしょうか?

A 回答 (1件)

VBだけでやるなら フラグを使ってMouseDownイベントなどでCtrlが押されているかどうかを判断しておくといった手法だと思います


WinAPIを使っていいのであれば GetKeyStatus辺りでチャックでしょう

フラグの場合
Dim bCtrl as Boolean
Sub Form_DblClick()
  if bClrl then
    MsgBox "Ctrlも一緒でした"
  end if
End Sub

Sub Form_MouseDown( b as integer, s as integer, x as Single, y as single)
  if s and vbCtrlMask then
    bCtrl = True
  else
    bCtrl = False
  end if
End Sub

WinAPIならば
Private Declare Function GetKeyState Lib "user32" (ByVal nVirtKey As Long) As Integer
Private Const VK_CONTROL = &H11

Private Sub Form_DblClick()
  If GetKeyState(VK_CONTROL) Then
    MsgBox "Ctrlも一緒だよ"
  End If
End Sub
といった具合でしょう
    • good
    • 0
この回答へのお礼

ありがとうございます。
投稿した後に自己解決してしまいました。
APIを使用しないのでredfox63さんの前者とほぼ同じです。

Public dblclk As Integer

Private Sub Form_DblClick()
dblclk = 1
End Sub

Private Sub Form_MouseUp(Button As Integer, Shift As Integer, x As Single, y As Single)
If dblclk = 1 Then
If Shift = vbCtrlMask Then
'Ctrlを押しながらダブルクリックした場合の処理
Else
'Ctrlを押さずにダブルクリックした場合の処理
End If
End If
End Sub

お礼日時:2007/10/02 10:49

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

このQ&Aを見た人はこんなQ&Aも見ています


おすすめ情報