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
。誰かがこれについて考えを持っていますか?