隐藏鼠标的实现 如果采用ShowCursor(FALSE)只能隐藏本窗口的鼠标,我需要隐藏系统是鼠标。请问各位高手如何入手。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 或者使用ClipCursor(CRect(0,0,0,0));ShowCursor(FALSE);// 一种比较常见的方法,创建一个线程。在线程中一直响应mouse_event消息,强制将鼠标移到(0,0)点。这种方法实现简单但很占CPU。实例代码为:/** * 隐藏鼠标的线程 */DWORD WINAPI HideMouseThread(PVOID param){ POINT cursorNew; while(1){ GetCursorPos(&cursorNew); ::mouse_event(MOUSEEVENTF_MOVE,cursorNew.x,cursorNew.y,0,0); }}一种方法为设置一个全局钩子。在钩子中将鼠标的位置移到(0,0)坐标。这种方法需要写动态链接库,因为全局钩子需要放在动态库中,占用的资源较少。实例代码为:/** * 隐藏鼠标钩子的回调函数 */LRESULT CALLBACK HideMouseHookProc(int nCode ,WPARAM wParam,LPARAM lParam);/** * 安装隐藏鼠标钩子 */DLLEXPORT int CALLBACK InstallHideMouseHook(){ theApp.m_hMouseHook = SetWindowsHookEx(WH_MOUSE,HideMouseHookProc,theApp.m_hInstance,0); return 1;}/** * 卸载隐藏鼠标钩子 */DLLEXPORT int CALLBACK UnInstallMouseHideHook(){ if (theApp.m_hMouseHook) { UnhookWindowsHookEx(theApp.m_hMouseHook); } theApp.m_hMouseHook = NULL; return TRUE;}/** * 窗口消息过滤钩子的回调函数 */LRESULT CALLBACK HideMouseHookProc(int nCode ,WPARAM wParam,LPARAM lParam){ POINT cursorNew; GetCursorPos(&cursorNew); ::mouse_event(MOUSEEVENTF_MOVE,cursorNew.x,cursorNew.y,0,0); return CallNextHookEx(theApp.m_hMouseHook,nCode,wParam,lParam);} 删除系统全部的*.cur之类的文件如何? HCURSOR hCursor; hCursor = AfxGetApp()-> LoadCursor(IDC_MOUSE); SystemParametersInfo(SPI_SETMOUSEVANISH,...) 绘制个透明的鼠标,使用 setsystemcursor替换系统鼠标,然后启用个钩子,拦截鼠标消息。 【提问】MS Detour3.0 注入Direct sound 截获的API只一次 如何实现这样的功能, error C2065: “Image”: 未声明的标识符 给点思路! 图形控件上的波形图显示区域 不能随着窗口的最大化而变大 有关于地图的问题 richeditctrl控件中移动光标 帮忙看看问题出在那儿?在线等待 请各位达人介绍几本Directx9的好书啊。 hook的问题 SetDlgItemText MFC命令行问题
ClipCursor(CRect(0,0,0,0));
ShowCursor(FALSE);//
但很占CPU。
实例代码为:
/**
* 隐藏鼠标的线程
*/
DWORD WINAPI HideMouseThread(PVOID param)
{
POINT cursorNew;
while(1){
GetCursorPos(&cursorNew);
::mouse_event(MOUSEEVENTF_MOVE,cursorNew.x,cursorNew.y,0,0);
}
}
一种方法为设置一个全局钩子。在钩子中将鼠标的位置移到(0,0)坐标。这种方法需要写动态链接库,因为全局钩子需要
放在动态库中,占用的资源较少。实例代码为:
/**
* 隐藏鼠标钩子的回调函数
*/
LRESULT CALLBACK HideMouseHookProc(int nCode ,WPARAM wParam,LPARAM lParam);/**
* 安装隐藏鼠标钩子
*/
DLLEXPORT int CALLBACK InstallHideMouseHook()
{
theApp.m_hMouseHook = SetWindowsHookEx(WH_MOUSE,HideMouseHookProc,theApp.m_hInstance,0);
return 1;
}/**
* 卸载隐藏鼠标钩子
*/
DLLEXPORT int CALLBACK UnInstallMouseHideHook()
{
if (theApp.m_hMouseHook)
{
UnhookWindowsHookEx(theApp.m_hMouseHook);
} theApp.m_hMouseHook = NULL; return TRUE;
}
/**
* 窗口消息过滤钩子的回调函数
*/
LRESULT CALLBACK HideMouseHookProc(int nCode ,WPARAM wParam,LPARAM lParam)
{
POINT cursorNew; GetCursorPos(&cursorNew);
::mouse_event(MOUSEEVENTF_MOVE,cursorNew.x,cursorNew.y,0,0); return CallNextHookEx(theApp.m_hMouseHook,nCode,wParam,lParam);
}
hCursor = AfxGetApp()-> LoadCursor(IDC_MOUSE);
SystemParametersInfo(SPI_SETMOUSEVANISH,...)