读书人

希望能够有一个鼠标钩子的例子见下

发布时间: 2012-02-02 23:57:14 作者: rapoo

希望能够有一个鼠标钩子的例子,见下,是csdn上给出的,但是照着他的代码打有9个错误,那个高手帮我改正一下谢谢。
APPWizard(EXE)生成一个不使用文档/视结构的单文档应用mousehook。打开childview.cpp文件,加入全局变量:
HHOOK hHook;//鼠标钩子句柄
CPoint point;//鼠标位置信息
CChildView *pView;
// 鼠标钩子函数用到的输出窗口指针

  在CChildView::OnPaint()添加如下代码:
CPaintDC dc(this);
char str[256];
sprintf(str,“x=%d,y=%d",point.x,point.y);
//构造字符串
dc.TextOut(0,0,str); //显示字符串

  (2)childview.cpp文件中定义全局的鼠标钩子函数。
LRESULT CALLBACK MouseProc
(int nCode, WPARAM wParam, LPARAM lParam)
{//是鼠标移动消息
if(wParam==WM_MOUSEMOVE||wParam
==WM_NCMOUSEMOVE)
{
point=((MOUSEHOOKSTRUCT *)lParam)->pt;
//取鼠标信息
pView->Invalidate(); //窗口重画
}
return CallNextHookEx(hHook,nCode,wParam,lParam);
//传递钩子信息
}
(3)CChildView类的构造函数中安装钩子。
CChildView::CChildView()
{
pView=this;//获得输出窗口指针
hHook=SetWindowsHookEx(WH_MOUSE,MouseProc,0,GetCurrentThreadId());
}
(4)CChildView类的析构函数中卸载钩子。
CChildView::~CChildView()
{
if(hHook)
UnhookWindowsHookEx(hHook);
}
见上,http://dev.csdn.net/article/21/21362.shtm,是csdn上给出的,但是照着他的代码打有9个错误,那个高手帮我改正一下,把可运行的代码发给我,谢谢。
learnmfc@163.com



[解决办法]
f(wParam==WM_MOUSEMOVE ¦ &brvbarwParam ==WM_NCMOUSEMOVE)
-----------------------------------
brvbarwParam 没定义,应该是lParam,另外, | 应该为 ||

其它的都是符号错误

我给你发过去





读书人网 >VC/MFC

热点推荐