如题,在图像框中将鼠标变成大的十字架

解决方案 »

  1.   

    Private Declare Function LoadCursorFromFile Lib "user32" Alias "LoadCursorFromFileA" (ByVal lpFileName As String) As Long
    Private Declare Function SetClassLong Lib "user32" Alias "SetClassLongA" (ByVal hwnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As LongPrivate Const GCL_HCURSOR = (-12)
    Private Const OCR_NORMAL = 32512
    通过鼠标文件来改变鼠标形状...动态的也可以....
      

  2.   

    Public Function SetMouseCursor(ByVal hwnd As Long, ByVal strFilePath As String, _
                                   Optional ByVal bytSetflag As Byte = 1) As Boolean
                                   
        Dim strExt              As String
        Dim lngCur              As Long
        
        On Error GoTo End_Handle
        
        'if appointed file is not exist
        If Dir(strFilePath) = "" Then GoTo End_Handle
        
        strExt = Right(strFilePath, 4)
        
        'if extended name of appointed file is not '.ani, .cur, .ico'
        Select Case strExt
        Case ".ani", ".cur", ".ico"
        Case Else
            GoTo End_Handle
        End Select
        
        Select Case bytSetflag
        Case 1
            lngCur = LoadCursorFromFile(strFilePath)
        Case 0
            lngCur = LoadCursorFromFile(CStr(OCR_NORMAL))
        Case Else
            GoTo End_Handle
        End Select
        
        SetMouseCursor = SetClassLong(hwnd, GCL_HCURSOR, lngCur)
        
        'destroy cursor
        If bytSetflag = 0 Then Call DestroyCursor(lngCur)
        Exit Function
        
    End_Handle:
        SetMouseCursor = False
    End Function
      

  3.   

    我晕死..原来这个变量bytSetflag 是这样命名的bytSetfl*g,他居然不让我发....
    真晕死.........不会把fl*g认为是"xxx"吧
    (把当中的*去掉)
      

  4.   

    Option ExplicitPrivate Declare Function ShowCursor Lib "user32.dll" (ByVal bShow As Long) As LongPrivate Sub Form_Load()
        Me.AutoRedraw = True
        ShowCursor False
    End SubPrivate Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
        Me.Cls
        Line (X - 300, Y)-(X + 300, Y)
        Line (X, Y - 300)-(X, Y + 300)
    End SubPrivate Sub Form_Unload(Cancel As Integer)
        ShowCursor True
    End Sub
      

  5.   

    MousePointer 属性
          返回或设置一个值,该值指示在运行时当鼠标移动到对象的一个特定部分时,被显示的鼠标指针的类型。语法object.MousePointer [= value]MousePointer 属性语法包含下面部分:部分 描述 
    object 对象表达式,其值是“应用于”列表中的一个对象。 
    value 整数,按照设置值中的描述指定被显示的鼠标指针类型。 
    设置值value 的设置值为:常数 值 描述 
    vbDefault 0 (缺省值)形状由对象决定。 
    VbArrow 1 箭头。 
    VbCrosshair 2 十字线(crosshair 指针)。 
    VbIbeam 3 I 型 
    VbIconPointer 4 图标(矩形内的小矩形)。 
    VbSizePointer 5 尺寸线(指向东、南、西和北四方向的箭头)。 
    VbSizeNESW 6 右上-左下尺寸线(指向东北和西南方向的双箭头)。 
    VbSizeNS 7 垂-直尺寸线(指向南和北的双箭头)。 
    VbSizeNWSE 8 左上-右下尺寸线(指向东南和西北方向的双箭头)。 
    VbSizeWE 9 水-平尺寸线(指向东和西两个方向的双箭头)。 
    VbUpArrow 10 向上的箭头。 
    VbHourglass 11 沙漏(表示等待状态)。 
    VbNoDrop 12 不允许放下。 
    VbArrowHourglass 13 箭头和沙漏。 
    VbArrowQuestion 14 箭头和问号。 
    VbSizeAll 15 四向尺寸线。 
    VbCustom 99 通过 MouseIcon 属性所指定的自定义图标。 
    说明在鼠标指针越过窗体或对话框上的控件时,为了指出功能上的改变,可以使用该属性。沙漏标形状设置值 (11) 是很有用的,用来指示用户需要等待过程或操作的完成。注意 如果应用程序调用 DoEvents,那么 MousePointer 属性在经过 ActiveX 部件时可能暂时地改变。
      

  6.   

    我的图像比较大,所以图像框的AUTOREDRAW属性设为FALSE,用PAINT事件重画图像。
    我开始是用的十字架的鼠标图案,鼠标在图像上移动时,鼠标不会有闪烁感,但鼠标的十字架太小了,不知能不能将鼠标图案变得大一点。
    我现在用两条LINE实现十字架,将鼠标图案变为空白。但当鼠标在图像上移动时,两条LINE有明显的闪烁感。哪位兄弟帮下忙。万分感谢