VC中将当前窗口隐藏后,怎样改变前景窗口的鼠标指针
ShowWindow(SW_HIDE);HWNDhwnd=::GetForegroundWindow();::SendMessage(hwnd,SW_SETCURSOR,...
ShowWindow(SW_HIDE);
HWND hwnd=::GetForegroundWindow();
::SendMessage(hwnd,SW_SETCURSOR,0,(LPARAM)LoadCursor(NULL,IDC_CROSS));
发送WM_SETCURSOR消息到前景窗口没有作用,请问怎么解决? 展开
HWND hwnd=::GetForegroundWindow();
::SendMessage(hwnd,SW_SETCURSOR,0,(LPARAM)LoadCursor(NULL,IDC_CROSS));
发送WM_SETCURSOR消息到前景窗口没有作用,请问怎么解决? 展开
展开全部
你这个应该不行的,WM_SETCURSOR是连续发送的信号,你用Spy++看一下就知道了,你鼠标在窗口上移动,WM_SETCURSOR消息数量和WM_MOVE之类的一样多。
鼠标是全局量,你在你自己的程序里调用SetCursor函数也会影响到其它程序,但是一般默认的窗口函数在相应WM_SETCURSOR的时候都会将鼠标设置成注册窗口时提供的鼠标,绝大部分时候都是那个最普通的箭头。
所以你想要的效果比较难实现。当然你安装全局的钩子是可以实现的,关键是你要屏蔽掉当前窗口的WM_SETCURSOR消息。
鼠标是全局量,你在你自己的程序里调用SetCursor函数也会影响到其它程序,但是一般默认的窗口函数在相应WM_SETCURSOR的时候都会将鼠标设置成注册窗口时提供的鼠标,绝大部分时候都是那个最普通的箭头。
所以你想要的效果比较难实现。当然你安装全局的钩子是可以实现的,关键是你要屏蔽掉当前窗口的WM_SETCURSOR消息。
追问
我使用了全局的CBT钩子,发现并不是所有的窗口都能改变鼠标指针形状
追答
如果你可以安装了全局钩子,那么进入了目标进程的地址空间,那么你可以直接更改目标窗口的窗口来来修改默认的鼠标,用SetClassLongPtr来进行。参数GCL_HCURSOR。另外,你还可以通过SetWindowLongPtr来替换目标窗口的窗口函数,这样,所有的消息你都可以处理了。
展开全部
...无语 这里不叫鼠标指针,而叫句柄。你百度下就知道了。窗口没了,句柄也没了。
WM_SETCURSOR是什么我不太清楚。实现不行的话。你用消息钩子。去钩这个消息。
WM_SETCURSOR是什么我不太清楚。实现不行的话。你用消息钩子。去钩这个消息。
追问
我要更改的是鼠标的指针形状,不是句柄。
追答
。。 这样啊 说清楚嘛 误解了 呵呵
你看下http://apps.hi.baidu.com/share/detail/16811866
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
是否用postMessage呢,或者是否用setcapture(句柄),函数来补住鼠标指针,使鼠标焦点在前景窗口
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询