我想做一个简单的图片移动的程序
 没添加AniGif1的时候 窗体可以正常响应 keydown事件
加入了控件 form1 就失去了焦点不能正常响应了
想问下各位大侠 怎么才能让form1 一直获得焦点?
Private Sub form_keydown(KeyCode As Integer, Shift As Integer)
Select Case KeyCode
Case vbKeyUp
AniGif1.FileName = App.Path & "\image\上跑.gif"
Case vbKeyDown
AniGif1.FileName = App.Path & "\image\下跑.gif"
Case vbKeyLeft
AniGif1.FileName = App.Path & "\image\左跑.gif"
Case vbKeyRight
AniGif1.FileName = App.Path & "\image\右跑.gif"
End Select
End Sub

解决方案 »

  1.   

    建议你在AniGIF1_KeyDown事件里执行操作
      

  2.   

    'AppActivate Me.Caption
    AppActivate "Form1"
      

  3.   

    类似你所说的Anigif或WebBrowser会抢占焦点,导致窗体键盘事件无法响应最简单的你先加一句 Me.KeyPreView = True麻烦点 使用全局键盘检测, 再没有办法的话便得使用勾子了'全局键盘检测
    '按下 X 退出, 按下上下左右键 信息提示
    Option Explicit '强制宣告定义变量
    Private Declare Function GetAsyncKeyState Lib "user32" (ByVal vKey As Long) As Long
    Const vbKeyAlt = vbKeyMenu 'VB很像把它给漏了,自己加上吧
    Private Sub Form_Load()
       '将窗体居中显示 (屏幕宽度减去窗体的宽度)除以2 , (屏幕高度减去窗体的高度)除以2
       Me.Move (Screen.Width - Me.Width) \ 2, (Screen.Height - Me.Height) \ 2
       Me.Show
       Timer1.Interval = 10: Timer1.Enabled = True
    End SubPrivate Sub Timer1_Timer()
       '检查是否热键被按下
       If GetAsyncKeyState(vbKeyControl) And GetAsyncKeyState(vbKeyF9) Then Me.Caption = "按下了Ctrl + F9"
       If GetAsyncKeyState(vbKeyShift) And GetAsyncKeyState(vbKeyF10) Then Me.Caption = "按下了Shift + F10"
       If GetAsyncKeyState(vbKeyAlt) And GetAsyncKeyState(vbKeyF11) Then Me.Caption = "按下了Alter + F11"
       If GetAsyncKeyState(vbKeyControl) And GetAsyncKeyState(vbKeyAlt) And GetAsyncKeyState(vbKeyF10) Then Me.Caption = "按下了Ctrl + F10"
       If GetAsyncKeyState(vbKeyX) Then Unload Me
       If GetAsyncKeyState(vbKeyDown) Or GetAsyncKeyState(vbKeyUp) Then Me.Caption = "按下了上下键"
       If GetAsyncKeyState(vbKeyLeft) Or GetAsyncKeyState(vbKeyRight) Then Me.Caption = "按下了左右键"
    End Sub
     
    http://cbm666.com/demo2.exe
    这是我获得国家级高新技术奖的高速路系统 流程演示 使用的就是 AniGif