newCurs = LoadCursorFromFile(App.Path & "\res\cursor.cur")
setCursor newCurs
运行后总是没反应,帮帮忙吧,查了老半天都没找到。

解决方案 »

  1.   

    http://blog.xjtu.edu.cn/user1/1836/archives/2005/48612.shtml
      

  2.   

    strMediaPath是你的光标文件路径
    如:strMediaPath ="D:\Resource\"
    Public Const OCR_NORMAL = 32512
    Declare Function LoadCursorFromFile Lib "user32" Alias "LoadCursorFromFileA" (ByVal lpFileName As String) As Long
    Public Declare Function SetSystemCursor Lib "user32" (ByVal hcur As Long, _
            ByVal id As Long) As Long
    Public Declare Function LoadCursor Lib "user32" Alias "LoadCursorA" _
           (ByVal hInstance As Long, ByVal lpCursorName As Long) As Long
    1、显示手形光标
    Public HandMouse As StdPicture  '手形鼠标光标
    Set HandMouse = LoadPicture(strMediaPath + "H_point.cur")
    Command1.MousePointer = vbCustom  '鼠标光标变为手形状
    Command1.MouseIcon = HandMouse如果将H_point.cur转换成H_point.ico,一样可以用
    不过在有的时候,将导致光标闪烁或不可见,而H_point.cur就没有这个问题。
    这种方法将会丢失光标的颜色信息,即只能显示黑白两种颜色。2、显示彩色光标
    Private ArrowMouse As Long
    ArrowMouse = LoadCursorFromFile(strMediaPath + "bluearrow.cur")
    Call SetSystemCursor(ArrowMouse , OCR_NORMAL)这样可以显示彩色光标,但同样有闪烁现象。3、显示动画光标
    Private AniMouse As Long
    AniMouse = LoadCursorFromFile(strMediaPath + "globe.ani")
    Call SetSystemCursor(AniMouse , OCR_NORMAL)
      

  3.   

    这个我已经知道了,但是你试试不要用SetSystemCursor,用SetCursor就不行了
      

  4.   

    SetCursor好像一定要用LoadCursor加载进来,但是用LoadCursor不知怎么加入自己的图表,好像要一个宏转化,c++中可以,vb中不知怎么弄,我也不大清楚是不是这样,请指教。
      

  5.   

    //这个我已经知道了,但是你试试不要用SetSystemCursor,用SetCursor就不行了用setcursor一样没有问题:
    Private Sub Command1_Click()
       Dim hCursor As String
        Dim hOldCursor As Long
        Dim retval As Long
        
        hCursor = LoadCursorFromFile("E:\WINDOWS\Cursors\banana.ani")
        If hCursor = 0 Then
            MsgBox "no luck"
        Else
            hOldCursor = SetCursor(hCursor)
            Sleep 3000
            retval = SetCursor(hOldCursor)
        End If
    End Sub
      

  6.   

    不过,对于这样的问题,我不建议使用setcursor,我建议使用setclasslong实现,使用它的好处是可以指定具体的窗口显示自定义的cursor:
    Option Explicit
    Private Declare Function LoadCursorFromFile Lib "user32.dll" 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 LongConst GCL_HCURSOR = (-12)
    Dim hOldCursor As LongPrivate Sub Command1_Click()    Dim hNewCursor As Long    hNewCursor = LoadCursorFromFile("E:\WINDOWS\Cursors\banana.ani") '設定讀取動態游標
        hOldCursor = SetClassLong(hwnd, GCL_HCURSOR, hNewCursor)End SubPrivate Sub Command2_Click()
        hOldCursor = SetClassLong(hwnd, GCL_HCURSOR, hOldCursor) '設定回復到之前使用的 Cursor
    End SubPrivate Sub Form_Unload(Cancel As Integer)    hOldCursor = SetClassLong(hwnd, GCL_HCURSOR, hOldCursor) ' Unload 時 , 設定回復到之前使用的 CursorEnd Sub
      

  7.   

    我要做一个全局的
       用SetSystemCursor时当鼠标变成不可用样式时,那个第二个参数不知用什么,好像都不行,
       用setCursor时只有sleep时鼠标才那种样式,之后即使没有这句
    retval = SetCursorhOldCursor)
    也会变回来,我想可能是自动被windows重载了,怎么能让他一直是我设定的样式呢
    截获消息吗?大哥真厉害,什么都知道
      

  8.   

    我想要的功能已经达到了,只要鼠标不放就不会变,给分了多谢rainstormmaster(暴风雨 v2.0)