MouseProc(int nCode,  WPARAM wParam,  LPARAM lParam)
SetWindowsHookEx(WH_MOUSE,(HOOKPROC)MouseProc,hins,0);
问题:hins 参数传到mouseProc的那一个参数?, lParam?  lparam不是记录鼠标坐标的吗? 希望 有人能解答一下这两函数的参数传递关系。我是想通过勾子实现修改鼠标光标的,这个光标是用户自定义光标,非系统光标。如果是系统光标,实现效果很好,但改用自定义光标资源就不行了,所以希望能解答一下LoadCursor /setCursor函数的实现内部机制,光标应该是属于某个程序或是属于系统的,那为什么这两个API不需指定程序句柄呢?  LoadCursor加载自定义光标资源,要指定程序实例。那返回的光标句柄是属于系统的,还是当前程序》???

解决方案 »

  1.   

    hins 和那两个mouseProc的参数没有关系.
     wParam 鼠标消息
    lParam指向一个结构体MOUSEHOOKSTRUCT 这里可以得到如鼠标位置什么的
      

  2.   


    那这样的话,我在MouseProc中用LoadCursor函数加载自定义的光标就根本没有了,因为LoadCursor要指定hins啊mail.
      

  3.   

    hinst的作用是告诉SetWindowsHookEx函数你的MouseProc在哪个Module里,因为MouseProc这个参数是相对hinst的偏移量。hinst不会传递给MouseProc。在MouseProc里如果需要hinst的话可以用GetModuleHandle()函数,也可以在DllMain()里把hinst保存到全局变量中。
      

  4.   

    光标放在DLL资源里用一个全局变量保存一下DllMain参数里的hModule
    LoadCursor的那个hInstance用DLL的hModule
      

  5.   

    hins 和MousePro的参数没有关系. 另外,那几个参数的注释
    LRESULT CALLBACK MouseProc(
      int nCode,      // hook code
      WPARAM wParam,  // message identifier
      LPARAM lParam   // mouse coordinates
    );
      

  6.   

    接着问,loadcursor 加载*.ani的动态光标就不行,加载.cur光标就OK,这都是指的自定义光标
      

  7.   

    你的光标资源在哪个INSTANCE里头,你就传入哪个INSTANCE。
    用 LOADLIBRARY 可得到 INSTANCE