VBGood网站全文搜索 Google

搜索VBGood全站网页(全文搜索)

VB爱好者乐园(VBGood)

 找回密码
 立即注册
搜索
查看: 8094|回复: 1

谁能告诉我关于DirectXEvent8_DXCallback的使用吗?

[复制链接]
 楼主| 发表于 2011-2-3 21:40:28 | 显示全部楼层 |阅读模式
这种对DirectInput鼠标输入的使用有什么好处?

Dim diProp As DIPROPLONG

    '创建设备
    Set DI = DX.DirectInputCreate
    Set DIDevice = DI.CreateDevice("guid_SysMouse")
   
    Call DIDevice.SetCommonDataFormat(DIFORMAT_MOUSE)
   
    '如果为窗体模式,为非独占,全屏幕模式为独占
    If Windowed Then
        Call DIDevice.SetCooperativeLevel(frmMain.hwnd, DISCL_BACKGROUND Or DISCL_NONEXCLUSIVE)
    Else
        Call DIDevice.SetCooperativeLevel(frmMain.hwnd, DISCL_FOREGROUND Or DISCL_EXCLUSIVE)
    End If
   
    diProp.lHow = DIPH_DEVICE
    diProp.lObj = 0
    diProp.lData = 50
    Call DIDevice.SetProperty("DIPROP_BUFFERSIZE", diProp)
    MouseEvent = DX.CreateEvent(frmMain)           '这里的frmMain是对象吗?我能否在函数中引用进来?
    DIDevice.SetEventNotification MouseEvent
End Sub
    '这里没有用Acquire激活,也可使用吗?
......

Implements DirectXEvent8

Private Declare Function GetCursorPos Lib "user32.dll" (ByRef lpPoint As POINTAPI) As Long

Private Sub DirectXEvent8_DXCallback(ByVal EventID As Long)
Dim DevData(1 To 50) As DIDEVICEOBJECTDATA
Dim NumEvents As Long
Dim LoopC As Long
Dim Moved As Byte
Dim OldMousePos As POINTAPI

    On Error GoTo ErrOut

    'Check if message is for us
    If EventID <> MouseEvent Then Exit Sub
    If GetActiveWindow = 0 Then Exit Sub

    'Retrieve data
    NumEvents = DIDevice.GetDeviceData(DevData, DIGDD_DEFAULT)

'DirectXEvent8_DXCallback这个过程是在什么情况下响应?
发表于 2015-2-5 04:14:38 | 显示全部楼层
DX这么强大,能不用API的地方就不用吧。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

文字版|手机版|小黑屋|VBGood  

GMT+8, 2022-7-4 04:03

VB爱好者乐园(VBGood)
快速回复 返回顶部 返回列表