如何控制mouse_event在指定的窗口内才起作用?

zhang5wen 2006-04-14 05:53:36
我用定时器发出mouse_event消息,我想让它只在指定的窗口内才发出mouse_event,当把鼠标移开指定的窗口时,就停定时器,该如何做呢?还有我是通过注册的热键来启用定时器的。
void CmousetestDlg::OnBnClickedOk()
{

RegisterHotKey(GetSafeHwnd(),0,0,VK_F1);

//ASSERT(m_isKeyRegistered != FALSE);
}

void CmousetestDlg::OnTimer(UINT nIDEvent)
{
mouse_event(MOUSEEVENTF_LEFTDOWN,0,0,0,0);
mouse_event(MOUSEEVENTF_LEFTUP,0,0,0,0);
Sleep(5);// TODO: 在此添加消息处理程序代码和/或调用默认值

CDialog::OnTimer(nIDEvent);
}
LONG CmousetestDlg::OnHotKey(WPARAM wParam,LPARAM lParam)
{
if(wParam==0)
{
SetTimer(1,1000,NULL);
}
}
...全文
508 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhang5wen 2006-04-14
  • 打赏
  • 举报
回复
谢谢了楼上的兄弟了
zhang5wen 2006-04-14
  • 打赏
  • 举报
回复
就是做鼠标点击器@@
Snow_Ice11111 2006-04-14
  • 打赏
  • 举报
回复
仁兄是要做个鼠标点击器么?!^_^
Snow_Ice11111 2006-04-14
  • 打赏
  • 举报
回复
void CmousetestDlg::OnTimer(UINT nIDEvent)
{
CWnd *wnd=FindWindow(0,"bitmapbk"); //先找到你感兴趣的窗口,这里举个例子
CRect rect;
//得到窗口区域。如果你要找到窗口只是个控件的话,前面代码就自己改改
wnd->GetWindowRect(&rect);
POINT Point;
GetCursorPos(&Point);
if(PtInRect(&rect,Point))
{
mouse_event(MOUSEEVENTF_LEFTDOWN,0,0,0,0);
mouse_event(MOUSEEVENTF_LEFTUP,0,0,0,0);
Sleep(5);// TODO: 在此添加消息处理程序代码和/或调用默认值
}
else
KillTimer(1);
CDialog::OnTimer(nIDEvent);
}
--------------------------------------------------------------------------------
上面代码只是信手敲出来,请自己调试一下。
zhang5wen 2006-04-14
  • 打赏
  • 举报
回复
什么啊?我是第一次接触VC,以前是做C#的
Kerrie 2006-04-14
  • 打赏
  • 举报
回复
无语,早点改行也许更好些
zhang5wen 2006-04-14
  • 打赏
  • 举报
回复
各位大大,帮帮忙给个例子吧,偶是新手,急
zhang5wen 2006-04-14
  • 打赏
  • 举报
回复
怎么做?给个例子嘛,偶是新手
fisker0303 2006-04-14
  • 打赏
  • 举报
回复
得到你感兴趣的窗口句柄;得到它的客户区域;得到光标位置;判断光标是否在区域内。
lixiaosan 2006-04-14
  • 打赏
  • 举报
回复
判断当前活动窗口

GetActiveWindow
GetForegroundWindow

15,979

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 界面
社区管理员
  • 界面
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧