现在我有4个按钮:IDC_BUTTON1,IDC_BUTTON2,IDC_BUTTON3,IDC_BUTTON4
想分别实现按钮一直按下去执行动作,松开按钮中止执行。查过资料大体是处理WM_LBUTTONDOWN和WM_LBUTTONUP消息,现在我不是很明白,如何区分我按的具体是那个按钮?麻烦给解答一下,最好有代码可以参考,谢谢了!
想分别实现按钮一直按下去执行动作,松开按钮中止执行。查过资料大体是处理WM_LBUTTONDOWN和WM_LBUTTONUP消息,现在我不是很明白,如何区分我按的具体是那个按钮?麻烦给解答一下,最好有代码可以参考,谢谢了!
{
// TODO: Add your message handler code here and/or call default
GRC_TYPE rc;
MOT_COM_PAIR RefOmega; //获取应用程序指针
CGeoMonitorApp *app = (CGeoMonitorApp *)AfxGetApp(); // stop controller and any possible movements
(void) MOT_StopController(MOT_NORMAL);
// start controller; the only valid mode for SetVelocity is MOD_OCONST
rc = MOT_StartController(MOT_OCONST); switch (this->GetFocus()->GetDlgCtrlID())
{
case IDC_BUTTON_UP:
if (rc == GRC_OK)
{
RefOmega.adValue[0] = 0;
RefOmega.adValue[1] = float(app->m_VeloUpDown)/100;
rc = MOT_SetVelocity(RefOmega);
}
break;
case IDC_BUTTON_DOWN:
if (rc == GRC_OK)
{
RefOmega.adValue[0] = 0;
RefOmega.adValue[1] = - float(app->m_VeloUpDown)/100;
rc = MOT_SetVelocity(RefOmega);
}
break;
case IDC_BUTTON_LEFT:
if (rc == GRC_OK)
{
RefOmega.adValue[0] = float(app->m_VeloLeRi)/100;
RefOmega.adValue[1] = 0;
rc = MOT_SetVelocity(RefOmega);
}
break;
case IDC_BUTTON_RIGHT:
if (rc == GRC_OK)
{
RefOmega.adValue[0] = - float(app->m_VeloLeRi)/100;
RefOmega.adValue[1] = 0;
rc = MOT_SetVelocity(RefOmega);
}
break;
if (rc == GRC_OK)
{ }
}
CButton::OnLButtonDown(nFlags, point);
}
为什么以第一点击按钮不起作用,第二次点击才起作用呢?
http://topic.csdn.net/u/20110924/16/50deed44-92fa-4907-8904-f7d5758da39e.html
不知道还有没有更有效的办法