防止双击MFC-Dialog按钮

时间:2015-07-27 12:41:25

标签: c++ mfc dialog event-handling double-click

我正在使用MFC C ++开发Autocad / Bricscad-Dialogs。知道我发现了一个更大的问题。有一个对话框,用于设置“特殊”绘图对象的元数据。我用这个对话框(在一个循环中)更新每个'特殊'绘图对象的数据。因此,如果您有十个“特殊”绘图对象,则相同的对话框将打开十次(连续)。现在我遇到的问题是用户有时会双击“OK”-Button。但是如果双击足够快,则会自动单击此对话框的下一个实例的“确定” - 按钮。我尝试了很多(例如,如果点击它就禁用按钮),但没有解决我的问题。也许你们中的某个人有个好主意。

祝你好运, 西蒙

2 个答案:

答案 0 :(得分:2)

当您打开一个新对话框时,您可以在进入正常的消息循环之前刷新鼠标单击消息的消息队列,例如:

MSG msg;
while (PeekMessage(&msg, hWndDlg, WM_LBUTTONDOWN, WM_LBUTTONDOWN, PM_REMOVE));

答案 1 :(得分:1)

我试图扩展乔纳森波特的答案。

当您打开一个新对话框并调用OnInitDIalog时,只需从队列中删除鼠标消息并等待1/10秒。

directive

PeekMessage的技巧将起作用,问题是你需要运行循环,只需双击"双击"会采取。如果点击距离为1/10秒,则需要在这段时间内删除所有鼠标点击。

OnInitDialog也是正确的位置。您可以将此刷新扩展到所有鼠标消息WM_MOUSEFIRST / WM_MOUSELAST ...以获取所有点击。

启动下一个对话框时延迟1/10秒并不昂贵或烦人。