フォーカスの復元

アプリケーションを切り替えた時にフォーカスを元に戻したい場合がある。
この処理を実現するには、CMainFrame?(アプリケーションの一番基点となるフレーム) のWM_ACTIVATEメッセージのハンドラで処理を行う。
void CMainFrame::OnActivate(UINT nState, CWnd* pWndOther, BOOL bMinimized){
    CMDIFrameWnd::OnActivate(nState, pWndOther, bMinimized);
    if(nState == WA_INACTIVE){
        m_pOldFocus = GetFocus();
    }else{
        if(m_pOldFocus && ::IsWindow(m_pOldFocus->m_hWnd)){
            m_pOldFocus->SetFocus();
        }
    }
}