I actually did find something useful. Adding this line to the CFormView constructor lets you use any dialog for the form view: CMFCView::CMFCView() : CFormView(CMFCsdi2View::IDD) { m_lpszTemplateName = MAKEINTRESOURCE(View_IDD_TO_USE); } So at run time I can set View_IDD_TO_USE to the resource for IDD_DIALOG1 or IDD_DIALOG2. The form view then gets created with whichever of the resources I choose. I create the event handlers in the view, i.e. OnOK(). The controls in each dialog need to be the same including names so that when the view creates the handlers they can be mapped, i.e. there must be a control named ID_OK on each dialog so the view can correctly map ID_OK to OnOK(). That means no duplicated code, only two dialogs which doesn't add to much overhead. This works great for what I'm doing. Thanks to Scott McPhillips for the direction.