首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >CRichEditCtrl和箭头键

CRichEditCtrl和箭头键
EN

Stack Overflow用户
提问于 2012-10-12 03:34:33
回答 1查看 642关注 0票数 0

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

代码语言:javascript
复制
UINT MyRichEditCtrl::OnGetDlgCode()
{
   return CRichEditCtrl::OnGetDlgCode() | DLGC_WANTALLKEYS;
}

代码语言:javascript
复制
void MyRichEditCtrl::OnChar(UINT nChar, UINT nRepCnt, UINT nFlags)
{
   CRichEditCtrl::OnKeyDown(nChar, nRepCnt, nFlags);
   ...    
}

并且我在消息映射中匹配它们..

代码语言:javascript
复制
BEGIN_MESSAGE_MAP(MyRichEditCtrl, CRichEditCtrl)
   ON_WM_CHAR()
   ON_WM_GETDLGCODE()
END_MESSAGE_MAP()

我得到了大多数键,但没有箭头键。我在OnKeyDown和OnKeyUp事件中也得到了同样的结果。有没有别的方法可以拿到箭头键?

具体地说,我想知道当前光标位置处的字符是否是括号。用户可以通过键入字符、用鼠标单击编辑控件中的某处或通过用箭头键移动光标位置来改变光标位置。我在想,如果我能检测到箭头键,那么我就能知道光标是否在括号里。

EN

回答 1

Stack Overflow用户

发布于 2012-10-15 01:07:30

您的示例代码似乎是错误的。OnChar应该调用CRichEditCtrl::OnChar。我猜你是在你的真实代码中这样做的。

不管怎样,OnKeyDown就是你要找的(箭头键不是字符)。因此,将ON_WM_KEYDOWN()添加到您的消息映射并覆盖OnKeyDown。例如,查找VK_LEFTVK_RIGHT

但是..。你的方法是错误的。您需要的是CharFromPos

代码语言:javascript
复制
CPoint pt = GetCaretPos();
int wordLocation = CharFromPos(pt);
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12847168

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档