CEditからのWM_KEYDOWNメッセージを取得する方法

[戻る]
モカ 2004/12/28(火) 12:34:01
XPにてVC6を使用してます。
コードで配置したCEditから、エンターキー等が押されたことを検知したいのですが、そ
の方法がわかりません。
タブの名前を変更する際に、タブの上にエディットボックスを置いて書き換えを行いた
いと思ってます。
書き換えること自体は可能なのですが、エディットボックスを消すタイミングに困って
います。エンターやエスケープが押されたら、と考えているのですが。
どなたかご教授ください。よろしくお願いします。

123 2004/12/28(火) 16:09:48
BOOL CKeyPad::PreTranslateMessage(MSG* pMsg)
{
    if (pMsg->message == WM_KEYDOWN)
{
}
    return CDialog::PreTranslateMessage(pMsg);
}

123 2004/12/28(火) 16:09:48
BOOL CKeyPad::PreTranslateMessage(MSG* pMsg)
{
    if (pMsg->message == WM_KEYDOWN)
{
}
    return CDialog::PreTranslateMessage(pMsg);
}

123 2004/12/28(火) 16:17:07
書いてる途中に誤動作しました。すいません。

確認してませんが、CEditの派生クラスでPreTranslateMessageをオーバーライドしてみ
てはどうですか。


BOOL CMyEdit::PreTranslateMessage(MSG* pMsg)
{
    if (pMsg->message == WM_KEYDOWN && pMsg->wParam = VK_RETURN)
    {
        ここに処理を書く
    }

    return CDialog::PreTranslateMessage(pMsg);
}

モカ 2004/12/29(水) 14:49:38
[[解決]]
123さん、ありがとうございました。
サブクラス化するのが面倒だったので、CViewで下のようにしました。

BOOL CMyView::PreTranslateMessage(MSG* pMsg)
{
    if (pMsg->hwnd == m_edit.m_hWnd && pMsg->wParam = VK_RETURN)
    {
        //終了処理
    }
    return CView::PreTranslateMessage(pMsg);
}

とりあえずこれで問題も起きていないので解決です。
ありがとうございました。

古いスレッドには追加発言できません。