代码之家  ›  专栏  ›  技术社区  ›  Varadharajan

让我的代码等到光标加载MS Excel 2016

  •  2
  • Varadharajan  · 技术社区  · 6 年前

    Option Explicit
    
    Private Const IDC_WAIT As Long = 32514
    
    Private Type POINT
    x As Long
    y As Long
    End Type
    
    Private Type CURSORINFO
    cbSize As Long
    flags As Long
    hCursor As Long
    ptScreenPos As POINT
    End Type
    
    Private Declare Function GetCursorInfo _
    Lib "user32" (ByRef pci As CURSORINFO) As Boolean
    Private Declare Function LoadCursor _
    Lib "user32" Alias "LoadCursorA" _
    (ByVal hInstance As Long, ByVal lpCursorName As Long) As Long
    
    Public Function IsWaitCursor() As Boolean
    
    ' Get handle to wait cursor
    Dim handleWaitCursor As Long
    handleWaitCursor = LoadCursor(ByVal 0&, IDC_WAIT)
    
    Dim pci As CURSORINFO
    pci.cbSize = Len(pci)
    
    ' Retrieve information about the current cursor
    Dim ret As Boolean
    ret = GetCursorInfo(pci)
    
    If ret = False Then
        MsgBox "GetCursorInfo failed", vbCritical
        Exit Function
    End If
    
    ' Returns true when current cursor equals to wait cursor
    IsWaitCursor = (pci.hCursor = handleWaitCursor)
    
    End Function
    

    1 回复  |  直到 5 年前
        1
  •  1
  •   Varadharajan    6 年前
    Private Const IDC_WAIT As Long = 32514
    Private Type POINT
    X As Long
    Y As Long
    End Type
    
    Private Type CURSORINFO
    cbSize As Long
    flags As Long
    hCursor As LongPtr
    ptScreenPos As POINT
    End Type
    
    Private Declare PtrSafe Function GetCursorInfo _
    Lib "User32" (ByRef pci As CURSORINFO) As Boolean
    Private Declare PtrSafe Function LoadCursor Lib "User32" Alias "LoadCursorA" (ByVal hInstance As Long, ByVal lpCursorName As Long) As LongPtr
    
    Public Function IsWaitCursor() As Boolean
    
    ' Get handle to wait cursor
    Dim handleWaitCursor As LongPtr
    handleWaitCursor = LoadCursor(ByVal 0&, IDC_WAIT)
    
    Dim pci As CURSORINFO
    pci.cbSize = Len(pci)
    
    ' Retrieve information about the current cursor
    Dim ret As Boolean
    ret = GetCursorInfo(pci)
    
    If ret = False Then
        MsgBox "GetCursorInfo failed", vbCritical
        Exit Function
    End If
    
    ' Returns true when current cursor equals to wait cursor
    IsWaitCursor = (pci.hCursor = handleWaitCursor)
    
    End Function
    

    上面的代码对我有用。我换了 数据类型到