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 通过鼠标文件来改变鼠标形状...动态的也可以....
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
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
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
通过鼠标文件来改变鼠标形状...动态的也可以....
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
真晕死.........不会把fl*g认为是"xxx"吧
(把当中的*去掉)
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
返回或设置一个值,该值指示在运行时当鼠标移动到对象的一个特定部分时,被显示的鼠标指针的类型。语法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 部件时可能暂时地改变。
我开始是用的十字架的鼠标图案,鼠标在图像上移动时,鼠标不会有闪烁感,但鼠标的十字架太小了,不知能不能将鼠标图案变得大一点。
我现在用两条LINE实现十字架,将鼠标图案变为空白。但当鼠标在图像上移动时,两条LINE有明显的闪烁感。哪位兄弟帮下忙。万分感谢