谁知道当我的程序忙时(就是鼠标有漏斗那时),windows给我的程序发过的lparam会是多少?怎么取消windows的这个信息让我程序永远不会显示正忙?

解决方案 »

  1.   

    在你程序中写上screen.mousepointer = vbarrow
      

  2.   

    用SetSystemCursor这个api:
    Private Const OCR_WAIT = 32514Private Declare Function SetSystemCursor Lib "user32" (ByVal hcur As Long, ByVal id As Long) As Long使用时,先用loadcursor或LoadCursorFromFile或其它手段获得一个光标句柄
    然后:
    SetSystemCursor 光标句柄,OCR_WAIT
      

  3.   

    楼上讲的和vb里不调用api做到的效果一样,你给的不完整,得加上
    Public Declare Function DestroyCursor Lib "user32" (ByVal hCursor As Long) As Long
    不然,程序运行以后,整个系统的鼠标都变了:(
    我要的钩了,若,系统发给程序(窗体)或程序发给系统为忙的鼠标代号时取消这个消息
    神啊9958
      

  4.   

    没有
    设置鼠标光标是用SetCursor设置的,与消息机制无关
    SetCursor设置的是线程鼠标光标,平常看到鼠标光标是当前线程的鼠标光标
    每当控件接受到鼠标事件时,都会调用SetCursor设置一下线程鼠标光标,所以看起来光标是属于控件的
      

  5.   

    SetSystemCursor用来改变标准鼠标光标的所用图案rainstormmaster(暴风雨 v2.0)的意思是将“忙”鼠标光标图案改成 “普通”鼠标光标的那种图案修改鼠标方案本质上就是调用SetSystemCursor,只不过多了将数据保存到注册表的过程
      

  6.   

    setcursor 和 setsyscursor 都不能达到我想要的目的。讨论下是什么原因让程序的鼠标忙呢?
      

  7.   

    //讨论下是什么原因让程序的鼠标忙呢?
    程序在任何时候都可以调用setcursor修改鼠标指针图案,与所处的实际工作无关也就是说:
    若是程序想修改鼠标指针图案,随时可以调用setcursor。比如你将Form的MousePointer设为VbHourglass,看看效果如何
    若是程序硬是不想修改鼠标指针图案,就是不在处理费时操作前修改光标。你会发现鼠标指针还是以前的正常状态的鼠标指针图案(因为此时该线程正在处理费时操作,自然没有设置光标。)只不过当Windows发现某个线程无法响应界面后,会自动接管该线程的消息处理,比如会将窗口的光标设为忙、将窗口中的内容设为一片空白……
    这是Windows 2000才开始提供的功能,可以让用户将该窗口最小化或结束任务。
      

  8.   

    //只不过当Windows发现某个线程无法响应界面后,会自动接管该线程的消息处理,比如会将窗口的光标设为忙、将窗口中的内容设为一片空白……原来如此,又长了些知识.