ダイアログなアプリでリターンキーでもボタンを押すことにする

MFCのダイアログベースなアプリを作っているとリターンキーでダイアログが終了→アプリそのものも終了してしまうのがつらい。なわけで大体の場合空っぽの OnOK() を作って無駄うちさせているかと思われますが。
前項ので調べてたら「リターンキーでもボタンを押せるようにする*1」という対応を昔作ってたのが見つかったので公開してみます。

void CDlg::OnOK() 
{
    CWnd *pFocus = GetFocus();
    if( pFocus != NULL              &&
        pFocus->GetParent() == this )
    {
        pFocus->PostMessage(BM_CLICK,0,0);
    }
    
//  CDialog::OnOK();
}

自分(ダイアログ)の子(つまりはボタン)かどうかチェックさせてます。必要ない気もしますけど。

*1:普通はスペースキー