CSDN - 专家门诊 - 问题
推荐给朋友 | 关闭窗口
主 题: mouse hook
作 者: e0 (忆玲)
等 级:
信 誉 分: 100
人 气: 0
所属论坛: VC/MFC 进程/线程/DLL
问题点数: 40
回复次数: 0
发表时间: 2003-6-1 11:36:14
我想做这样的程序:
原始的程序是这样的,鼠标在View窗口中移动时,view中会出现一段跟随鼠标光标的文字。用OnMouseMove和OnDraw实现:
.h中声明成员变量:m_MousePoint
.cpp:
void CHookTestView::OnMouseMove(UINT nFlags, CPoint point)
{
// TODO: Add your message handler code here and/or call default
m_MousePoint=point;
Invalidate(TRUE);
CView::OnMouseMove(nFlags, point);
}
void CHookTestView::OnDraw(CDC* pDC)
{
CHookTestDoc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
// TODO: add draw code for native data here
if(m_MousePoint.x>=0 && m_MousePoint.y>=0)
{
pDC->TextOut(m_MousePoint.x,m_MousePoint.y,"TextTextText");
}
}
现在,我要在我的程序中加一个鼠标钩子Hook,使得每次接受到鼠标事件时,先将传递来的“鼠标位置”变量向左上方偏移(pt.x-=30;pt.y-=30),然后再将消息传递给view窗口。这样,这段跟随鼠标的文字就应该偏移。我是这样做的。
InstallHook()和myMouseProc都已经订一位static.
这段代码紧接在view.cpp后面:
HHOOK myMouseHook;
HINSTANCE myInstance;
void CHookTestView::InstallHook()
{
myMouseHook=
SetWindowsHookEx(WH_MOUSE,
myMouseProc,
AfxGetApp()->m_hInstance,
GetCurrentThreadId());
}
LRESULT CALLBACK CHookTestView::myMouseProc(int nCode, WPARAM wParam, LPARAM lParam)
{
CString str;
MOUSEHOOKSTRUCT* pStruct = (MOUSEHOOKSTRUCT*)lParam;
pStruct->pt.x-=30;
pStruct->pt.y-=30;
return CallNextHookEx (myMouseHook, nCode, wParam, lParam);
}
推荐给朋友 | 关闭窗口
主 题: mouse hook
作 者: e0 (忆玲)
等 级:
信 誉 分: 100
人 气: 0
所属论坛: VC/MFC 进程/线程/DLL
问题点数: 40
回复次数: 0
发表时间: 2003-6-1 11:36:14
我想做这样的程序:
原始的程序是这样的,鼠标在View窗口中移动时,view中会出现一段跟随鼠标光标的文字。用OnMouseMove和OnDraw实现:
.h中声明成员变量:m_MousePoint
.cpp:
void CHookTestView::OnMouseMove(UINT nFlags, CPoint point)
{
// TODO: Add your message handler code here and/or call default
m_MousePoint=point;
Invalidate(TRUE);
CView::OnMouseMove(nFlags, point);
}
void CHookTestView::OnDraw(CDC* pDC)
{
CHookTestDoc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
// TODO: add draw code for native data here
if(m_MousePoint.x>=0 && m_MousePoint.y>=0)
{
pDC->TextOut(m_MousePoint.x,m_MousePoint.y,"TextTextText");
}
}
现在,我要在我的程序中加一个鼠标钩子Hook,使得每次接受到鼠标事件时,先将传递来的“鼠标位置”变量向左上方偏移(pt.x-=30;pt.y-=30),然后再将消息传递给view窗口。这样,这段跟随鼠标的文字就应该偏移。我是这样做的。
InstallHook()和myMouseProc都已经订一位static.
这段代码紧接在view.cpp后面:
HHOOK myMouseHook;
HINSTANCE myInstance;
void CHookTestView::InstallHook()
{
myMouseHook=
SetWindowsHookEx(WH_MOUSE,
myMouseProc,
AfxGetApp()->m_hInstance,
GetCurrentThreadId());
}
LRESULT CALLBACK CHookTestView::myMouseProc(int nCode, WPARAM wParam, LPARAM lParam)
{
CString str;
MOUSEHOOKSTRUCT* pStruct = (MOUSEHOOKSTRUCT*)lParam;
pStruct->pt.x-=30;
pStruct->pt.y-=30;
return CallNextHookEx (myMouseHook, nCode, wParam, lParam);
}
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货