MFC中为什么单选按钮点击事件会被调用两次?
时间: 2023-09-14 19:15:45 浏览: 190
MFC 单击,双击事件响应
4星 · 用户满意度95%
MFC中单选按钮点击事件被调用两次的原因是,MFC中单选按钮控件发送了两个消息:`BN_CLICKED`和`BN_DOUBLECLICKED`。当单选按钮被单击时,首先发送`BN_CLICKED`消息,然后发送`BN_DOUBLECLICKED`消息。因此,当单选按钮被单击时,单击事件会被调用两次。
为了解决这个问题,可以在单选按钮的响应函数中加入以下代码:
```c++
void CMyDialog::OnRadioButtonClicked()
{
static UINT uLastClicked = 0;
UINT uCurrentClicked = ::GetTickCount();
if (uCurrentClicked - uLastClicked > 500)
{
// 处理单选按钮单击事件
}
uLastClicked = uCurrentClicked;
}
```
这段代码使用了一个静态变量`uLastClicked`和`GetTickCount()`函数来判断两次单击事件之间的时间间隔是否超过了500毫秒。如果超过了,则处理单击事件,否则忽略第二个`BN_DOUBLECLICKED`消息。
阅读全文