防止双击mfc对话框按钮
Prevent double click on MFC-Dialog button
我正在mfcc++中开发Autocad/brickscad - dialog。我发现了一个更大的问题。有一个对话框为"特殊"绘图对象设置元数据。我用这个对话框(在循环中)更新每个"特殊"绘图对象的数据。所以如果你有10个"特殊"的绘图对象,同样的对话框将打开10次(连续)。现在我有一个问题,用户有时会双击"确定"按钮。但是如果双击的速度足够快,下一个对话框实例的"OK"按钮会自动点击。我尝试了很多(例如禁用按钮,如果它被点击),但没有解决我的问题。也许你们中有人有好主意。
最诚挚的问候,西蒙。
当你打开一个新的对话框时,你可以在进入正常的消息循环之前刷新鼠标点击消息的消息队列,例如:
MSG msg;
while (PeekMessage(&msg, hWndDlg, WM_LBUTTONDOWN, WM_LBUTTONDOWN, PM_REMOVE));
我试着扩展Jonathan Potter的答案。
当你打开一个新的对话框并调用OnInitDIalog时,只需从队列中删除鼠标消息并等待1/10秒。
MSG msg;
DWORD dwStart = ::GetTickCount():
while (PeekMessage(&msg, hWndDlg, WM_LBUTTONDOWN, WM_LBUTTONDOWN, PM_REMOVE)!=0 ||
(::GetTickCount() - dwStart) < 100))
;
PeekMessage的技巧将工作,问题是,你需要运行循环,只要"双击"将采取。如果点击的距离是1/10秒,你需要在这段时间内移除所有的鼠标点击。
并且OnInitDialog是正确的位置。你可以将这个刷新扩展到所有的鼠标消息WM_MOUSEFIRST/WM_MOUSELAST…获得所有点击
启动下一个对话框时的1/10秒延迟并不昂贵或令人讨厌。
相关文章:
- WinAPI 在单击第一个对话框上的按钮控件并销毁第一个对话框后创建第二个对话框
- "最小化"按钮不会出现在 MFC 对话框中
- 如何在 VC6 中的对话框中将图标设置为按钮
- 在主窗口之前显示登录对话框并隐藏主窗口按钮
- 如何获取资源文件中对话框的按钮控件的大小和位置
- 无法更新 qt 对话框中的按钮
- 创建关闭GTK+对话框的取消按钮的正确方法是什么
- 嗨,我正在尝试编码一个允许用户在Visual C 中登录的按钮,程序正在运行,但表单对话框未显示
- 如何使 UI 对象仅在单击按钮后显示在对话框中
- c++ qt 主窗口设置图像后的对话框"确定"按钮
- 调整对话框大小时移动对话框上的按钮
- 单击CEdit和CSpin按钮会导致在MFC对话框中丢失捕获
- 带有下一步/后退按钮的Qt对话框/小部件
- 在对话框中禁用按钮控件需要一些时间
- 单击对话框关闭按钮时,正确中止线程
- CD对话框中的Apply按钮
- 如何在MFC对话框按钮上设置管理权限图标
- 防止双击mfc对话框按钮
- 点击Visual c++时打开对话框按钮
- MFC“确定/取消”对话框按钮替代