PreTranslateMessage 截获backspace消息的问题
今天发现了一个很奇快的现象 百思不得其解 希望各位大侠伸出援助之手 3Q
对于一个EDIT控件关联了整形变量 按backspace删除数据 如果只剩最后一位数据了删除后文本控件显示为0
我是这么写的
生成可执行文件后 执行程序 当EDIT控件删除到只有两个数据的时候 点一下backspace键,EDIT1控件的内容就会变为0了
在GetDlgItem(IDC_EDIT1)->GetWindowText(temp);之前加入断点, 每按一次backspace键 响应两次VK_BACK消息
所以当还剩两位数字 按下backspace后 先执行一次后应该剩一位, 之后又执行了一次 就使edit中设置为0了
执行backspace为什么会响应两次VK_BACK消息 那么大侠帮我解答下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
...全文


