MFC 非模态对话框编辑框如何响应回车键
时间: 2024-04-09 10:28:52 浏览: 93
MFC创建模态对话框和非模态对话框的方法
您可以在 MFC 非模态对话框中的编辑框控件的消息映射函数中添加处理 Enter 键的代码。以下是一个示例:
首先,在对话框类的消息映射函数中添加 WM_INITDIALOG 消息的处理代码:
```cpp
BOOL YourDialog::OnInitDialog()
{
CDialogEx::OnInitDialog();
// 将编辑框的 Enter 键设置为默认按钮
GetDlgItem(IDC_EDIT)->SendMessage(EM_SETWANTRETURN, TRUE);
return TRUE;
}
```
然后,在编辑框的消息映射函数中添加处理 Enter 键的代码:
```cpp
BOOL YourDialog::OnCommand(WPARAM wParam, LPARAM lParam)
{
if (LOWORD(wParam) == IDC_EDIT && HIWORD(wParam) == EN_CHANGE)
{
// 获取编辑框文本长度
int textLength = GetDlgItem(IDC_EDIT)->GetWindowTextLength();
// 如果文本长度大于 0,且最后一个字符为回车键,则执行相应操作
if (textLength > 0)
{
CString text;
GetDlgItem(IDC_EDIT)->GetWindowText(text);
if (text.GetAt(textLength - 1) == '\r')
{
// 执行相应操作
AfxMessageBox(_T("Enter 键被按下!"));
// 清空编辑框内容
GetDlgItem(IDC_EDIT)->SetWindowText(_T(""));
}
}
}
return CDialogEx::OnCommand(wParam, lParam);
}
```
在上面的代码中,我们首先在 OnInitDialog 函数中将编辑框的 Enter 键设置为默认按钮,然后在 OnCommand 函数中判断是否是编辑框的 EN_CHANGE 消息,并且最后一个字符是回车键。如果是,则执行相应操作,例如显示一个消息框并清空编辑框的内容。
这样,当用户在编辑框中按下回车键时,就会触发相应的操作。
阅读全文