博客
关于我
MFC 判断单击双击
阅读量:797 次
发布时间:2023-02-08

本文共 1113 字,大约阅读时间需要 3 分钟。

BOOL CXXXWnd::PreTranslateMessage(MSG* pMsg)  {    pClientPoint = pMsg->pt;      MSG message;      DWORD st = GetTickCount();      while(1)      {          if(::PeekMessage(&message, NULL, 0 ,0 , PM_REMOVE))          {              ::TranslateMessage(&message);              ::DispatchMessage(&message);              if(message.message == WM_LBUTTONDBLCLK)              {                  //双击事件                  break;              }              DWORD et = GetTickCount();              if(et - st > GetDoubleClickTime())              //双击时间间隔为500ms              {                  pClientPoint = pMsg->pt;                  this->ScreenToClient(&pClientPoint);                  if (rectCoord.PtInRect(pClientPoint))                  {                  }                  else                  {                  }              }              break;          }      }  }

这段代码定义了一个窗口类的PreTranslateMessage函数,主要用于处理窗口消息。函数首先将客户点设置为消息的坐标点,然后创建一个MSG结构体。接着,通过一个循环来处理消息。

在循环内部,函数首先检查是否有消息可读。如果有消息,则进行翻译和派发。如果是双击事件,则跳出循环。否则,计算当前时间戳并与之前记录的时间戳比较,判断是否超过双击时间间隔。如果超过,则将客户点转换为窗口客户坐标,并检查点是否在指定的区域。

这段代码的注释清晰,逻辑结构合理,适合用于窗口类的消息处理。

转载地址:http://gryfk.baihongyu.com/

你可能感兴趣的文章
luogu3172 [CQOI2015]选数 莫比乌斯反演+杜教筛
查看>>
lvm基本知识与常用命令
查看>>
lvs+keepalive主从和主主架构
查看>>
LVS--NAT模型介绍及模型实现
查看>>
LVS-DR工作原理图文详解
查看>>
LVS-负载均衡
查看>>
LVS基本介绍
查看>>
LVS精益价值管理系统 DownLoad.aspx 任意文件读取漏洞复现
查看>>
LVS精益价值管理系统 LVS.Web.ashx SQL注入漏洞复现
查看>>
LVS负载均衡
查看>>
Lync Server单前端无边缘的外部访问思考
查看>>
Lync 小技巧-52-Lync 2013-不加域-客户端-2-导入-证书-信任链
查看>>
LZ4 1.10 压缩算法发布!具有多线程功能,压缩速度显著提高达 8 倍
查看>>
lz4_flex 项目教程
查看>>
lzg_ad:打印机需要的组件支持
查看>>
mabatis 中出现< 以及> 代表什么意思?
查看>>
Mac + Anaconda 上的 Qt 设计器应用程序在哪里?
查看>>
Mac book air 重新安装系统验证显示 untrusted_cert_title
查看>>
Mac book pro打开docker出现The data couldn’t be read because it is missing
查看>>
mac elasticsearch brew安装填坑
查看>>