一种可行的方式是重载PreTranslateMessage,特别的,如果是在edit控制中,还要实现真正的回车换行功能,因此要先GetSel光标所选,再ReplaceSel为"\r\n"。
BOOL NsHostDlg::PreTranslateMessage(MSG* pMsg)
{
if (pMsg->message == WM_KEYDOWN)
{
if (pMsg->wParam == VK_RETURN)
{
// 检查焦点是否在 IDC_EDIT1 上
if (GetFocus() == GetDlgItem(IDC_EDIT1))
{
// 可以在这里处理回车键,在当前行下面例如插入新行等
int nStartChar, nEndChar;
m_editCmd.GetSel(nStartChar, nEndChar); // 获取当前选择的字符位置
m_editCmd.ReplaceSel("\r\n", TRUE);
return TRUE;
}
}
}
return CDialogEx::PreTranslateMessage(pMsg);
}
3122

被折叠的 条评论
为什么被折叠?



