【发布时间】:2017-11-18 07:54:56
【问题描述】:
我正在尝试在笔记编辑控件中实现 ctrl+A :m_editNoteTypeView",它是类 NoteDialog 中的 cEdit 实例。 我的笔记编辑如下所示。
NoteDialog::initDialog()
{
m_editNoteTypeView.CreateEx(::GetWindowLong(m_editSubject.m_hWnd, GWL_EXSTYLE), "edit", "", dwStyle | ES_READONLY, CRect(0, 0, 0, 0), this, 0);
m_editNoteTypeView.SetSel(0,-1,TRUE);
}
NoteDialog 类派生自另一个名为 Sdialog 的类,该类最终派生自 CDialog。
我在 SDialog 中定义了PreTranslateMessage(MSG* pMsg),但控制不会转到 PreTranslateMessage,因此当我在笔记编辑上打字时,我无法检查我在键盘上按下的键。
bool Sdialog::PreTranslateMessage(MSG* pMsg)
{
if (GetFocus() == this)
{
if (pMsg->message == WM_CHAR)
{
if ((LOWORD(pMsg->wParam) & VK_CONTROL) == VK_CONTROL)
{
//SetSel(0, -1);
}
}
}
return CDialog::PreTranslateMessage(pMsg);
}
【问题讨论】:
-
如果编辑控件有焦点,它什么时候不会处理按键?你试过
WM_KEYDOWN吗?
标签: visual-c++ mfc ctrl editcontrol