Vc6 Button 的WM_LBUTTONDOWN、WM_LBUTTONUP消息响应

      在一个小工具制作过程中,需要响应按键的Down 、UP事件,并利用这些消息,通过串口分发。

 

 int gms_key = KEY_NULL;  //KEY_NULL  无按键动作

void CALLBACK MS_TimerKeySend(HWND hWnd,UINT nMsg,UINT nTimerid,DWORD dwTime)
{
 ClassA dlg;
 dlg.Send_MSKey(gms_key);
}

 

BOOL ClassA::PreTranslateMessage(MSG* pMsg)
{
 //   TODO:   在此添加专用代码和/或调用基类
 BOOL bDO = FALSE;
 int buID;
 buID = GetWindowLong(pMsg->hwnd,GWL_ID);//由窗口句柄获得ID号,GetWindowLong为获得窗口的ID号。

 if (pMsg->message == WM_LBUTTONDOWN)
 {
  switch (buID)
  {
  case IDC_BUTTONENTER:  //Button ID
   bDO = TRUE;
   gms_key = KEY_MENU;     //每个button对应的键值
   break;
  case IDC_BUTTONUP:
   bDO = TRUE;
   gms_key = KEY_UP;
   break;
  case IDC_BUTTONDOWN:
   bDO = TRUE;
   gms_key = KEY_DOWN;
   break;
  case IDC_BUTTONCANCEL:
   bDO = TRUE;
   gms_key = KEY_CANCEL;
   break;
  default:
   break;
  }
  if (bDO)
  {
   Send_MSKey((char)gms_key);      //串口分发
      SetTimer(KEY_TIMER_ID,KEY_SCAN_TIME,MS_TimerKeySend);    //配置定时器,做些规律性的吧
  }
 }

 if (pMsg->message == WM_LBUTTONUP)
 {
  switch (buID)
  {
   case IDC_BUTTONENTER:
   case IDC_BUTTONUP:
   case IDC_BUTTONDOWN:
   case IDC_BUTTONCANCEL:
    KillTimer(KEY_TIMER_ID);     
    gms_key = KEY_NULL;
    Send_MSKey((char)gms_key);
    Sleep(200);
    Send_MSKey((char)gms_key);
    break;
   default:
    break;
  }   
 }
 return CDialog::PreTranslateMessage(pMsg);
}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值