我正在使用mfc的cedit控制制作类似matlab的命令窗口。
例如,在我输入几个命令后,我想使用箭头键(特别是向上键)显示旧命令。
我成功显示了旧命令,但未能将光标定位在此命令的末尾。 原因似乎是在我在此命令的末尾找到光标后再次输入箭头键。
以下是详细情况。
但是,我的光标上升到了上一行。
@ play
玩!.. | (←光标位于此处..)
@ play | (←我想在点击'↑'键)
后找到光标
这是我的代码:
class CEditCommand::CEdit
{
public:
virtual BOOL PreTranslateMessage(MSG* pMsg);
}
BOOL CEditCommand::PreTranslateMessage(MSG* pMsg)
{
if (pMsg->message == WM_KEYDOWN)
{
if (pMsg->wParam == VK_UP)
{
int nS = 0; nE =0;
GetSel(nS, nE);
int nLineIndex = LineIndex();
CString str = m_CommandHistory[m_nCommandIndex];
m_nCommandIndex--;
SetSel(nLineIndex, nE);
ReplaceSel(str);
SetSel(0, -1);
SetSel(-1, -1);
}
}
}
我不知道为什么'↑'执行PreTranslateMessage
后,将再次按下该键。
有没有人对此有所了解?
答案 0 :(得分:2)
您的编辑控件仍会显示向上箭头消息,因此当CEditCommand::PreTranslateMessage()
WM_KEYUP
的{{1}}中返回TRUE。 >