有没有办法在派生的CRichEditCtrl类中捕获箭头键?我请求所有键并捕获OnGetCode()和OnChar()命令。
UINT MyRichEditCtrl::OnGetDlgCode()
{
return CRichEditCtrl::OnGetDlgCode() | DLGC_WANTALLKEYS;
}和
void MyRichEditCtrl::OnChar(UINT nChar, UINT nRepCnt, UINT nFlags)
{
CRichEditCtrl::OnKeyDown(nChar, nRepCnt, nFlags);
...
}并且我在消息映射中匹配它们..
BEGIN_MESSAGE_MAP(MyRichEditCtrl, CRichEditCtrl)
ON_WM_CHAR()
ON_WM_GETDLGCODE()
END_MESSAGE_MAP()我得到了大多数键,但没有箭头键。我在OnKeyDown和OnKeyUp事件中也得到了同样的结果。有没有别的方法可以拿到箭头键?
具体地说,我想知道当前光标位置处的字符是否是括号。用户可以通过键入字符、用鼠标单击编辑控件中的某处或通过用箭头键移动光标位置来改变光标位置。我在想,如果我能检测到箭头键,那么我就能知道光标是否在括号里。
发布于 2012-10-15 01:07:30
您的示例代码似乎是错误的。OnChar应该调用CRichEditCtrl::OnChar。我猜你是在你的真实代码中这样做的。
不管怎样,OnKeyDown就是你要找的(箭头键不是字符)。因此,将ON_WM_KEYDOWN()添加到您的消息映射并覆盖OnKeyDown。例如,查找VK_LEFT和VK_RIGHT。
但是..。你的方法是错误的。您需要的是CharFromPos
CPoint pt = GetCaretPos();
int wordLocation = CharFromPos(pt);https://stackoverflow.com/questions/12847168
复制相似问题