Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/150.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ CRICHEDITCRL和箭头键_C++_Mfc - Fatal编程技术网

C++ CRICHEDITCRL和箭头键

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

有没有办法在派生的CRichEditCtrl类中捕获箭头键?我请求所有键并捕获OnGetCode()和OnChar()命令

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);