我做了一个程序,用钩子程序响应鼠标右键双击事件,为了测试,我是当鼠标右键双击时谈出一个MESSAGEBOX,代码如下:
LRESULT CALLBACK MouseProc(int nCode, WPARAM wParam, LPARAM lParam)
{
char   msg[10]; 
  
LPMOUSEHOOKSTRUCT pMouseHook=(MOUSEHOOKSTRUCT FAR *) lParam;
if (nCode>=0)
{   
//双击鼠标右键进行粘贴操作
if (wParam==WM_LBUTTONUP) 
{   
//SendMessage(g_hWnd,WM_PASTE,0,0);   
  i++;
  sprintf(msg,"%d",i); 
::MessageBox(NULL,msg,"title",MB_OK);
return TRUE;
}
//单击鼠标中键进行数据复制

}
// }
// 传给系统中的下一个钩子
return CallNextHookEx(g_hmouse, nCode, wParam, lParam);
}但是我在测试时,双击有键时确一下谈出了30个窗口,请问这是怎么回事,望各位高手帮忙解答。

解决方案 »

  1.   

    //双击鼠标右键进行粘贴操作 
    if (wParam==WM_LBUTTONUP
      

  2.   

    哦,不好意思,纯属打错了。不管哪个按扭其实不是关键,关键是我不知道为什么这段代码会一下弹出30个MESSAGEBOX
      

  3.   

    在MessageBox中吧GetCurrentThreadId显示出来
    如果是同一个Thread,那就用WindowFromPoint把Hwnd显示出来看看,最好把GetWindowText也显示出来,我猜想可能会是不同的Hwnd,但除了第一个,其他的都是你那个MessageBox或者它的那个Button