mfc picture 控件 单击 双击 事件 急 !在线等!
时间:2011-12-13
来源:互联网
作者: trojan_king 发布时间: 2011-12-13
这个是必然的啊,肯定先有单击,再有双击。
说说你的需求吧
作者: wangweixu520 发布时间: 2011-12-13
作者: wangweixu520 发布时间: 2011-12-13
作者: wangweixu520 发布时间: 2011-12-13
还有个方法,在pretranslatemessage里面做消息处理,这个还比较靠谱!
这个也判断屏蔽不掉单击么
需求是:单击图片 传递一组数据到另一个图片
双击图片 :放大图片到全屏 但不要传递数据
纠结呀 !
作者: trojan_king 发布时间: 2011-12-13
如果LButtonDown和LButtonDblClk同时有实现的话
总会实现单击消息,在网上找解决方法,思想是在单击消息实现中取时间,计算两次单击事件的时间差
来回尝试修改,最后成这个样子,还算简单明了
C/C++ code
clickInterval = 0; void OnLButtonDown(UINT nFlags, CPoint point) { if(GetTickCount() - clickInterval < GetDoubleClickTime()) { this->OnLButtonDblClk(nFlags, point); return; } clickInterval = GetTickCount(); }
作者: bazzi2011 发布时间: 2011-12-13
那你可以判断在一定时间内单击两次就认定是双击。。
作者: shen_wei 发布时间: 2011-12-13
网上查到的,试了下,还可以!
如果LButtonDown和LButtonDblClk同时有实现的话
总会实现单击消息,在网上找解决方法,思想是在单击消息实现中取时间,计算两次单击事件的时间差
来回尝试修改,最后成这个样子,还算简单明了
C/C++ code
clickInterval = 0;
void OnLButtonDown(UINT nFlags, CPoint……
ok 我试试 把条件放在单击里边判断
作者: trojan_king 发布时间: 2011-12-13
引用 5 楼 bazzi2011 的回复:
网上查到的,试了下,还可以!
如果LButtonDown和LButtonDblClk同时有实现的话
总会实现单击消息,在网上找解决方法,思想是在单击消息实现中取时间,计算两次单击事件的时间差
来回尝试修改,最后成这个样子,还算简单明了
C/C++ code
clickInterval = 0;
void OnLBu……
貌似不行 — —!
作者: trojan_king 发布时间: 2011-12-13
作者: Tidal_Choidi 发布时间: 2011-12-13
分别在LButtonDown、LButtonDblClk两个消息函数中处理你的需求不行吗?
问题是 LButtonDblClk的消息会先触发LButtonDown的消息 也就是 双击事件发生时肯定会发生单击事件 这时 怎么屏蔽掉单击事件而只执行双击事件?
另 :请教高手 重载控件是不是可以达到目的?
作者: trojan_king 发布时间: 2011-12-13
// ButtonEx.cpp : 实现文件 // #include "stdafx.h" #include "CExcelDlg.h" #include "ButtonEx.h" // CButtonEx IMPLEMENT_DYNAMIC(CButtonEx, CButton) CButtonEx::CButtonEx() { m_nButClick = 0; m_bButClick = FALSE; } CButtonEx::~CButtonEx() { } BEGIN_MESSAGE_MAP(CButtonEx, CButton) ON_WM_LBUTTONDBLCLK() ON_WM_LBUTTONDOWN() ON_WM_LBUTTONUP() ON_WM_TIMER() END_MESSAGE_MAP() // CButtonEx 消息处理程序 void CButtonEx::OnLButtonDblClk(UINT nFlags, CPoint point) { SetWindowText(_T("11111")); m_bButClick = TRUE; CButton::OnLButtonDblClk(nFlags, point); } void CButtonEx::OnLButtonDown(UINT nFlags, CPoint point) { //SetWindowText(_T("22222")); CButton::OnLButtonDown(nFlags, point); } void CButtonEx::OnLButtonUp(UINT nFlags, CPoint point) { m_nButClick++; SetTimer(1,5,NULL); if (m_bButClick) { m_bButClick = FALSE; return; } SetWindowText(_T("22222")); CButton::OnLButtonUp(nFlags, point); } void CButtonEx::OnTimer(UINT_PTR nIDEvent) { if (m_nButClick == 2) { KillTimer(1); m_bButClick = TRUE; } CButton::OnTimer(nIDEvent); }我测试了还可以。。你可以试试。。
作者: shen_wei 发布时间: 2011-12-13
C/C++ code
// ButtonEx.cpp : 实现文件
//
#include "stdafx.h"
#include "CExcelDlg.h"
#include "ButtonEx.h"
// CButtonEx
IMPLEMENT_DYNAMIC(CButtonEx, CButton)
CButtonEx::CButtonEx()
{
m_nButClick……
我试了下 双击还是回触发单击 的操作、、
不信 你可以这样写双击响应:
[code=C/C++][/code]
void CButtonEx::OnLButtonDblClk(UINT nFlags, CPoint point)
{
CString s;
GetWindowText(s);
SetWindowText(s + _T("11111"));
m_bButClick = TRUE;
CButton::OnLButtonDblClk(nFlags, point);
}
结果会是 2222211111
所以我采用的方法是:
在双击事件中撤销单击事件的操作、、、
期待高手给出更好 的方法 — —!
作者: trojan_king 发布时间: 2011-12-13
http://bbs.9ria.com/thread-30916-1-1.html
作者: zyrr159487 发布时间: 2011-12-13
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28