笑够了吧不够还加.......
小弟我写了一个鼠标钩子函数,但是当鼠移出对话框以外时就没反应了,大定给我想想问题出在哪里,谁有这方面的电子书或资料也请贴上来或发给我,多谢.
[email protected]
分不够再加.
小弟我写了一个鼠标钩子函数,但是当鼠移出对话框以外时就没反应了,大定给我想想问题出在哪里,谁有这方面的电子书或资料也请贴上来或发给我,多谢.
[email protected]
分不够再加.
解决方案 »
- MFC多元线性回归对话框控件不显示数据
- VC 2008 导入Microsoft excel 11.0 object library后出错
- Debug Assertion Failed!
- MFC,通一个窗体上实现了聊天通讯之后,再如何实现tabcontrol控件。
- 各位大大,请问SetWindowLong GetWindowLong怎么用的?
- 问个问题,如果用API设置Windows标准按钮的颜色
- re.Field("side") = _T("1");中的re.Field是什么意思?
- 请问如何通过一个程序把另一个程序中的CCombobox
- 请教如何使用MD5?
- dll编译的一些问题,可以生成dll文件,却没有lib文件??
- 请教用VSS前辈:如果把所有文件简单地设置到同一个版本号?
- 有关tree的标签修改问题,改后又还原了(有源码,解决了马上结贴)
http://www.vckbase.com/code/listcode.asp?mclsid=13&sclsid=1309
哎......世事总难料我把部分代码写一下.劳烦各位帮我看看:
void CMouseHookDlg::OnCancel()
{
DlgHwnd=DlgHwndInCMouseHookDlg; //设置标钩子
MouseHook=::SetWindowsHookEx(WH_MOUSE,MouseProc,GetModuleHandle(NULL),0);}
//鼠标钩子回调函数
LRESULT CALLBACK MouseProc(int nCode,WPARAM wParam,LPARAM lParam)
{
if(wParam != WM_MOUSEMOVE) //只处理鼠标移动信息
return (::CallNextHookEx(MouseHook,nCode,wParam,lParam));
MOUSEHOOKSTRUCT* MouseHookStruct; //定义鼠标钩子结构
CPoint MousePoint;//定义鼠标位置结构
char MousePoint_x[10],MousePoint_y[10];//定义鼠标位置数组
MouseHookStruct = (MOUSEHOOKSTRUCT*)lParam; //获取鼠标消息
MousePoint.x = MouseHookStruct->pt.x; //获取鼠标位置
MousePoint.y = MouseHookStruct->pt.y; _ltoa(MousePoint.x ,MousePoint_x,10); //把鼠标位置转换为字符串
_ltoa(MousePoint.y ,MousePoint_y,10); char MousePointXY[20]; //合并两个字符串到一个字符串中
int i;
for( i=0; i<10;i++)
MousePointXY[i]=MousePoint_x[i];
for( i=10;i<20;i++)
MousePointXY[i]=MousePoint_y[i-10]; HWND HwndEdit; //获取对话框中EDIT控件的句柄,
HwndEdit=::GetDlgItem (DlgHwnd ,1000);//DlgHwnd为对话框的句柄 //发送鼠标位置字符串到对话框中的EDIT控件中
::SendMessage (HwndEdit,WM_SETTEXT,0,(LPARAM)MousePointXY); //返回
return (::CallNextHookEx (MouseHook,nCode,wParam,lParam));}
try~
把你的代码贴出来~
//鼠标钩子回调函数
LRESULT CALLBACK MouseProc(int nCode,WPARAM wParam,LPARAM lParam)
{
if(wParam != WM_MOUSEMOVE) //只处理鼠标移动信息
return (::CallNextHookEx (MouseHook,nCode,wParam,lParam));
MOUSEHOOKSTRUCT* MouseHookStruct; //定义鼠标钩子结构
CPoint MousePoint; //定义鼠标位置结构
char MousePoint_x[10],MousePoint_y[10]; //定义鼠标位置数组
MouseHookStruct = (MOUSEHOOKSTRUCT*)lParam; //获取鼠标消息
MousePoint.x = MouseHookStruct->pt.x; //获取鼠标位置
MousePoint.y = MouseHookStruct->pt.y; _ltoa(MousePoint.x ,MousePoint_x,10); //把鼠标位置转换为字符串
_ltoa(MousePoint.y ,MousePoint_y,10); char MousePointXY[20]; //合并两个字符串到一个字符串中
int i;
for( i=0; i<10;i++)
MousePointXY[i]=MousePoint_x[i];
for( i=10;i<20;i++)
MousePointXY[i]=MousePoint_y[i-10]; HWND HwndEdit; //获取对话框中EDIT控件的句柄,
HwndEdit=::GetDlgItem (DlgHwnd ,1000); //DlgHwnd为对话框的句柄 //发送鼠标位置字符串到对话框中的EDIT控件中
::SendMessage (HwndEdit,WM_SETTEXT,0,(LPARAM)MousePointXY); //返回
return (::CallNextHookEx (MouseHook,nCode,wParam,lParam));}//开始鼠标钩子函数
void CMouseHookDlg::OnCancel()
{
DlgHwnd=DlgHwndInCMouseHookDlg; //设置标钩子
MouseHook=::SetWindowsHookEx(WH_MOUSE,MouseProc,GetModuleHandle(NULL),0);}//关闭鼠标钩子函数
CMouseHookDlg::~CMouseHookDlg()
{
//关闭鼠标钩子
if(MouseHook != NULL)
::UnhookWindowsHookEx (MouseHook);
}
两次啊,我感觉一次就行了,实在不行你去找本windows核心编程抄抄吧。
钩子不在dll里面一般都会有这样的问题
void CMouseHookDlg::OnCancel()
{
DlgHwnd=DlgHwndInCMouseHookDlg; //设置标钩子
MouseHook=::SetWindowsHookEx(WH_MOUSE,MouseProc,GetModuleHandle(NULL),0);}
????????
不太对阿~
应该在OnInitDialog里开始吧~