Private Declare Function GetCursorPos Lib "user32" (lpPoint As POINTAPI) As LongPrivate Type POINTAPI 注释: 声明数据类型
x As Long
y As Long
End TypeDim z As POINTAPI 注释: 变量Private Sub Form_Load()
Timer1.Enabled = True
Timer1.Interval = 1
End SubPrivate Sub Timer1_Timer()
GetCursorPos z 注释: 获取坐标
Label1 = "x: " & z.x 注释: 显示 x 坐标
Label2 = "y: " & z.y 注释: 显示 y 坐标
End Sub 

解决方案 »

  1.   

    vbKeyLeft 0x25 LEFT ARROW 键 
    vbKeyUp 0x26 UP ARROW 键 
    vbKeyRight 0x27 RIGHT ARROW 键 
    vbKeyDown 0x28 DOWN ARROW 键 
      

  2.   

    1、GetCursorPos VB声明 
    Declare Function GetCursorPos Lib "user32" Alias "GetCursorPos" (lpPoint As POINTAPI) As Long 
    说明 
    获取鼠标指针的当前位置 
    返回值 
    Long,非零表示成功,零表示失败。会设置GetLastError 
    参数表 
    参数 类型及说明 
    lpPoint POINTAPI,随同指针在屏幕像素坐标中的位置载入的一个结构 
    2、上、下箭头键在VB里无表述,VB对它们没有控制
      

  3.   

    下面三个API你看着用吧.
    VB声明 
    Declare Function GetCaretPos Lib "user32" Alias "GetCaretPos" (lpPoint As POINTAPI) As Long 
    说明 
    判断插入符的当前位置 
    返回值 
    Long,非零表示成功,零表示失败。会设置GetLastError 
    参数表 
    参数 类型及说明 
    lpPoint POINTAPI,这个结构会随同插入符在窗口客户坐标系统中的位置载入;那个窗口是插入符的父窗口 
    VB声明 
    Declare Function ClientToScreen Lib "user32" Alias "ClientToScreen" (ByVal hwnd As Long, lpPoint As POINTAPI) As Long 
    说明 
    判断窗口内以客户区坐标表示的一个点的屏幕坐标 
    返回值 
    Long,非零表示成功,零表示失败 
    参数表 
    参数 类型及说明 
    hwnd Long,判断客户区坐标时那个窗口的句柄 
    lpPoint POINTAPI,用hwnd窗口的客户区坐标表示的点,这个参数会包含屏幕坐标系统中相同的点 
    VB声明 
    Declare Function ScreenToClient Lib "user32" Alias "ScreenToClient" (ByVal hwnd As Long, lpPoint As POINTAPI) As Long 
    说明 
    判断屏幕上一个指定点的客户区坐标 
    返回值 
    Long,非零表示成功,零表示失败 
    参数表 
    参数 类型及说明 
    hwnd Long,一个窗口的句柄,该窗口定义了要使用的客户区坐标系统 
    lpPoint POINTAPI,屏幕坐标系统中包含了屏幕点的结构。这个函数会随同相应的客户区坐标(由hwnd决定)载入结构 vbKey0        vbKeyF5       vbKeyNumpad4 
    vbKey1        vbKeyF6       vbKeyNumpad5 
    vbKey2        vbKeyF7       vbKeyNumpad6 
    vbKey3        vbKeyF8       vbKeyNumpad7 
    vbKey4        vbKeyF9       vbKeyNumpad8 
    vbKey5        vbKeyF10      vbKeyNumpad9 
    vbKey6        vbKeyF11      vbKeyO 
    vbKey7        vbKeyF12      vbKeyP 
    vbKey8        vbKeyF13      vbKeyPageDown 
    vbKey9        vbKeyF14      vbKeyPageUp 
    vbKeyA        vbKeyF15      vbKeyPause 
    vbKeyAdd      vbKeyF16      vbKeyPrint 
    vbKeyB        vbKeyG        vbKeyQ 
    vbKeyBack     vbKeyH        vbKeyR 
    vbKeyC        vbKeyHelp     vbKeyRButton 
    vbKeyCancel   vbKeyHome     vbKeyReturn 
    vbKeyCapital  vbKeyI        vbKeyRight 
    vbKeyClear    vbKeyInsert   vbKeyS 
    vbKeyControl  vbKeyJ        vbKeySelect 
    vbKeyD        vbKeyK        vbKeySeparator 
    vbKeyDecimal  vbKeyL        vbKeyShift 
    vbKeyDelete   vbKeyLButton  vbKeySnapshot 
    vbKeyDivide   vbKeyLeft     vbKeySpace 
    vbKeyDown     vbKeyM        vbKeySubtract 
    vbKeyE        vbKeyMButton  vbKeyT 
    vbKeyEnd      vbKeyMenu     vbKeyTab 
    vbKeyEscape   vbKeyMultiply vbKeyU 
    vbKeyExecute  vbKeyN        vbKeyUp 
    vbKeyF        vbKeyNumlock  vbKeyV 
    vbKeyF1       vbKeyNumpad0  vbKeyW 
    vbKeyF2       vbKeyNumpad1  vbKeyX 
    vbKeyF3       vbKeyNumpad2  vbKeyY 
    vbKeyF4       vbKeyNumpad3  vbKeyZ 
      

  4.   

    我试了vbKeyDown,可是不支持,是在  窗体的 KeyDown 事件里试的,因为KEYPRESS事件肯定不支持,有什么办法可以实现上下光标键的控制???谢谢了!
      

  5.   

    你要的是这个么?
    Private Declare Function GetCursorPos Lib "user32" (lpPoint As POINTAPI) As Long
    Private Declare Function SetCursorPos Lib "user32" (ByVal x As Long, ByVal y As Long) As Long
    Dim lStep As Long
    Private Type POINTAPI
            x As Long
            y As Long
    End Type
    Private Sub Form_KeyUp(KeyCode As Integer, Shift As Integer)
        Dim lPos As POINTAPI
        GetCursorPos lPos
        
        Select Case KeyCode
        Case 37
            lPos.x = lPos.x - lStep
        Case 38
            lPos.y = lPos.y - lStep
        Case 39
            lPos.x = lPos.x + lStep
        Case 40
            lPos.y = lPos.y + lStep
        End Select
        SetCursorPos lPos.x, lPos.y
    End SubPrivate Sub Form_Load()
        lStep = 10
    End Sub
      

  6.   

    光标的还好说,可是KEYDOWN为什么不行?祥见上楼上我回的帖子
      

  7.   

    什么呀,我问的是光标的位置,另外,第二个事件我用 KEYDOWN 事件解决了,他们都没答!不过还要感谢他们!
      

  8.   

    主  题:请问高手,怎样捕捉光标在窗体上的位置?
    作  者:bitcat
    所属论坛:Visual Basic
    问题点数:95
    回复次数:14
    发表时间:2002-1-9 17:02:04
     
      
          另外,请问上、下箭头键在VB里如何表述,象  vbKeyAscii=vbkeyReturn 表示回车键一样。谢谢! 
    1.捕捉光标在窗体上的位置
       GetCursorPos上面没有人回答吗 Jneu(沧海桑田) ljren_t(立志) yangzhaoyu(老妖)
    2.上、下箭头键在VB里如何表述,象  vbKeyAscii=vbkeyReturn 
      上面没有人解释吗? Jneu(沧海桑田) ljren_t(立志)
      KeyAscii不可能发生在KEYDOWN中,谁会知道你问"东"却要"西"的答案
      即使是KEYDOWN,不和KEYUP中的表述一样用KeyCode的吗? yangzhaoyu(老妖)回复人: bitcat(苍穹一啸) (2002-1-10 11:37:55)  得0分 
    什么呀,我问的是光标的位置,另外,第二个事件我用 KEYDOWN 事件解决了,他们都没答! !!!!!