C++ CRICHEDITCRL和箭头键
有没有办法在派生的CRichEditCtrl类中捕获箭头键?我请求所有键并捕获OnGetCode()和OnChar()命令C++ CRICHEDITCRL和箭头键,c++,mfc,C++,Mfc,有没有办法在派生的CRichEditCtrl类中捕获箭头键?我请求所有键并捕获OnGetCode()和OnChar()命令 UINT MyRichEditCtrl::OnGetDlgCode() { return CRichEditCtrl::OnGetDlgCode() | DLGC_WANTALLKEYS; } 及 我在消息映射中匹配它们 BEGIN_MESSAGE_MAP(MyRichEditCtrl, CRichEditCtrl) ON_WM_CHAR() ON_WM
UINT MyRichEditCtrl::OnGetDlgCode()
{
return CRichEditCtrl::OnGetDlgCode() | DLGC_WANTALLKEYS;
}
及
我在消息映射中匹配它们
BEGIN_MESSAGE_MAP(MyRichEditCtrl, CRichEditCtrl)
ON_WM_CHAR()
ON_WM_GETDLGCODE()
END_MESSAGE_MAP()
我得到了大多数钥匙,但没有箭头钥匙。我对OnKeyDown和onkeydup事件也得到了相同的结果。有没有其他方法可以得到箭头键
具体来说,我想知道当前光标位置的字符是否是括号。用户可以通过键入字符、用鼠标单击编辑控件中的某个位置或用箭头键移动光标位置来更改光标位置。我在想,如果我能检测到箭头键,那么我就能知道光标是否在括号内。您的示例代码似乎是错误的
OnChar
应该调用CRichEditCtrl::OnChar
。我猜你是在你的真实代码中这样做的
无论如何,OnKeyDown
是您要查找的内容(箭头键不是字符)。因此,将ON\u WM\u KEYDOWN()
添加到消息映射中,并覆盖OnKeyDown
。查找例如VK_LEFT
和VK_RIGHT
但是。。。你的方法是错误的。您需要的是:
BEGIN_MESSAGE_MAP(MyRichEditCtrl, CRichEditCtrl)
ON_WM_CHAR()
ON_WM_GETDLGCODE()
END_MESSAGE_MAP()
CPoint pt = GetCaretPos();
int wordLocation = CharFromPos(pt);