Private Declare Function ShowCursor Lib "user32" (ByVal bShow As Long) As LongPrivate Sub Command1_Click()
    ShowCursor 0
End Sub

解决方案 »

  1.   

    ShowCursor VB声明 
    Declare Function ShowCursor Lib "user32" Alias "ShowCursor" (ByVal bShow As Long) As Long 
    说明 
    控制鼠标指针的可视性 
    返回值 
    Long,显示计数(参考注解) 
    参数表 
    参数 类型及说明 
    bShow Long,TRUE(非零)显示指针,FALSE隐藏 
    注解 
    windows维持着一个内部显示计数;倘若bShow为TRUE,那么每调用一次这个函数,计数就会递增1;反之,如bShow为FALSE,则计数递减1。只有在这个计数大于或等于0的情况下,指针才会显示出来
     
      

  2.   

    屏蔽按键可以在KeyPress里面令ASCII=0
      

  3.   

    Public Declare Function CallWindowProc Lib "user32" Alias "CallWindowProcA" (ByVal lpPrevWndFunc As Long, ByVal hwnd As Long, ByVal Msg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
    Public Declare Function GetWindowLong Lib "user32" Alias "GetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long) As Long
    Public Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As LongPublic Const WM_LBUTTONDOWN = &H201
    Public Const WM_LBUTTONUP = &H202
    Public Const WM_MOUSEMOVE = &H200
    Public Const GWL_WNDPROC = (-4)Function WndProc(ByVal hwnd As Long, ByVal Msg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
        Select Case Msg
        Case WM_LBUTTONDOWN
        Case WM_LBUTTONUP
        Case WM_MOUSEMOVE
        Case Else
            WndProc = CallWindowProc(prevWndProc, hwnd, Msg, wParam, lParam)
        End Select
    End FunctionPrivate Sub Form_Load()
    prevWndProc = GetWindowLong(Text1.hwnd, GWL_WNDPROC)
    Call SetWindowLong(Text1.hwnd, GWL_WNDPROC, AddressOf WndProc)End Sub在 addressof 调用出错,请问是什么原因
      

  4.   

    WndProc
    这个函数必须放在模块中,不能放在窗体的代码中
      

  5.   

     
     
    AddressOf 运算符
          一个一元运算符,它将其后面的过程的地址传递给一个 API 过程,该 API 过程在参数表对应位置中需要一个函数指针。语法AddressOf procedurename必需的 procedurename 指定要传递的地址是哪一个过程的地址。这个过程必须是发出调用命令的工程中的一个标准模块模块里的一个过程。说明当一个过程的名称出现在一个参数列表中时,通常该过程已经被计算,并且该过程返回值的地址也会被传递。AddressOf 允许该过程的地址被传递给动态链接库 (DLL) 中的一个 Windows API 函数,而不是传递该过程的返回值。API 函数然后就可以使用这个地址来调用相应的 Basic 过程,这个过程就是我们所知道的回调。AddressOf 运算符只出现在对 API 过程的调用中。尽管可以使用 AddressOf 运算符在 Basic 过程之间传递过程指针,却不能通过这样的一个指针从 Basic 内部调用一个函数。这就是说,例如,一个使用 Basic 编写的类 不能使用这样的一个指针来回调自己的控制器。当使用 AddressOf 运算符在 Basic 内的过程之间传递一个过程的指针时,被调用过程的参数类型必须定义为 As Long。警告 如果不能完全理解函数回调的概念,则使用 AddressOf 运算符可能会导致意想不到的结果。必须理解回调的 Basic 部份是如何工作的,以及接受所传递的函数地址的 DLL 的代码是如何工作的。调试这样的交互操作是非常困难的,因为该程序和开发环境运行在相同的进程中。在某些情况下,系统的调试也许是不可能的。注意 可以使用 Microsoft Visual C++ (或者类似的工具)编译的 DLLs 来创建自己的回调函数原型。要使用 AddressOf 运算符来工作,您的原型必需使用 __stdcall 调用约定。缺省的调用约定 (__cdecl) 不能与 AddressOf 运算符一起工作。因为一个回调的调用程序不在用户自己的程序中,所以很重要的一点是要保证回调过程中的错误不被回传到调用者。可以通过把 On Error Resume Next 语句放置于回调过程的起始处来达到这个要求。