PreTranslateMessage 截获backspace消息的问题

nbabest23 nbabest23 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
今天发现了一个很奇快的现象 百思不得其解 希望各位大侠伸出援助之手 3Q
对于一个EDIT控件关联了整形变量 按backspace删除数据 如果只剩最后一位数据了删除后文本控件显示为0
我是这么写的

BOOL CFrequencyDlg::PreTranslateMessage(MSG* pMsg)
{
// TODO: Add your specialized code here and/or call the base class
CString temp;
if(pMsg->wParam == VK_BACK)
{
GetDlgItem(IDC_EDIT1)->GetWindowText(temp);
if(temp.GetLength() == 1)
{
GetDlgItem(IDC_EDIT1)->SetWindowText("0");
return TRUE;
}

}
return CDialog::PreTranslateMessage(pMsg);
}



生成可执行文件后 执行程序 当EDIT控件删除到只有两个数据的时候 点一下backspace键,EDIT1控件的内容就会变为0了
在GetDlgItem(IDC_EDIT1)->GetWindowText(temp);之前加入断点, 每按一次backspace键 响应两次VK_BACK消息
所以当还剩两位数字 按下backspace后 先执行一次后应该剩一位, 之后又执行了一次 就使edit中设置为0了

执行backspace为什么会响应两次VK_BACK消息 那么大侠帮我解答下3Q
...全文
评论 2
收藏 已收藏
分享
返回顶部
nbabest23
VC/MFC 16,550 成员 421,606 内容