Last Updated 2003/04/14
Programming Tips Visual C++ MFC ダイアログ  索 引 
SetFocus後のEnterキー
2003/04/14

通常ボタンにフォーカスがある状態で Enter キーを押下するとそのボタンが押下される.
しかし SetFocus 直後の Enter キー押下は無視されてしまう.
void CMyView::OnInitialUpdate() 
{
    CFormView::OnInitialUpdate();

    CButton* pb = (CButton*)GetDlgItem(IDC_BUTTON1);
    pb->SetFocus();
}
(View を CFormView にて作成)

Enter キーを押下してもボタン押下のハンドラが呼ばれない.マウスでボタンを押下した後(フォーカスはボタンのまま),Enter キー押下にてハンドラが呼ばれる.

どうも SetFocus とキーボード入力の移動は別で管理されている.

void CMyView::OnInitialUpdate() 
{
    CFormView::OnInitialUpdate();

    HWND hwndButton = ::GetDlgItem(*this, IDC_BUTTON1);
    PostMessage(WM_NEXTDLGCTL, (WPARAM)hwndButton, TRUE);
}

WM_NEXTDLGCTL にてフォーカスをうつすとうまくいく.


参照
前後のTips
SetFocus後のEnterキー

DSS ProgrammingTipsCGI Ver2.02