
MFC 判断单击双击
发布日期:2025-04-13 23:27:43
浏览次数:11
分类:精选文章
本文共 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结构体。接着,通过一个循环来处理消息。
在循环内部,函数首先检查是否有消息可读。如果有消息,则进行翻译和派发。如果是双击事件,则跳出循环。否则,计算当前时间戳并与之前记录的时间戳比较,判断是否超过双击时间间隔。如果超过,则将客户点转换为窗口客户坐标,并检查点是否在指定的区域。
这段代码的注释清晰,逻辑结构合理,适合用于窗口类的消息处理。
发表评论
最新留言
表示我来过!
[***.240.166.169]2025年05月10日 14时40分45秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
Maven学习总结(23)——Maven常用命令介绍
2025-04-12
maven常用命令集合(收藏大全)
2025-04-13
Maven项目怎样重新下载依赖
2025-04-13
MaxCompute访问TableStore(OTS) 数据(20170601更新)
2025-04-13
MBA中的企业金融课程涉及什么内容
2025-04-13
McPicker-iOS 使用指南
2025-04-13
MC新手入门(二十二)------ 游戏场景
2025-04-13
md5 16位及32位
2025-04-13
MD5加密
2025-04-13
MD5的算法(C)
2025-04-13
Mdrill 测试数据写入程序
2025-04-13
Mean-Shift聚类方法
2025-04-13
Meanshift,聚类算法
2025-04-13
media="screen"啥意思?
2025-04-13
media=screen是什么意思 有什么用?
2025-04-13
mediawiki
2025-04-13
MegaCli查看RIAD相关信息
2025-04-13
MEGER sentence in oracle
2025-04-13