VC中同时响应鼠标单击和双击事件
来源:优易学  2010-1-14 19:05:15   【优易学:中国教育考试门户网】   资料下载   IT书店

  GetDoubleClickTime()先获得这个dbtime,然后判断用户两次鼠标点击时间间隔是否大于dbtime,如果大于等于响应单击,小于响应双击

  消息循环中先PeekMessage,然后再GetMessage

  发现是某按键的单击消息,就不GetMessage,而直接处理该消息。

  原因是:GetMessage将第一次单击事件从消息链上取下来了,无法形成双击

  void   CDoubleClickDlg::OnLButtonDown(UINT   nFlags,   CPoint   point)

  {

  //   TODO:   Add   your   message   handler   code   here   and/or   call   default

  MSG   message;

  DWORD   st   =   GetTickCount();

  while(1)

  {

  if(::PeekMessage(&message,   NULL,   0   ,0   ,   PM_REMOVE))

  {

  ::TranslateMessage(&message);

  ::DispatchMessage(&message);

  if(message.message   ==   WM_LBUTTONDBLCLK)

  return;

  }

  DWORD   et   =   GetTickCount();

  if(et   -   st   >   200)

  break;

  }

  AfxMessageBox("clicked!");   //     single   click

  CDialog::OnLButtonDown(nFlags,   point);

  }

责任编辑:cyth

文章搜索:
 相关文章
热点资讯
资讯快报
热门课程培训