关于建立工程的有关问题

关于建立工程的问题
关于建立工程的有关问题小弟新手,最近需要写一软件,有A和B两个模式,每个模式有单独的页面进行操作.
初步设想是这样的:建立基于对话框的工程,在对话框上添加两个按钮,两个对话框,单击按钮能弹出对话框(需要菜单栏,工具栏等进行操作),可这样的话需要为添加的对话框添加菜单栏,工具栏等等,比较麻烦;听别人说可以建立基于FOrmView的单文档工程,这样同样需要插入两个对话框,各位大神们能不能给点意见,建立什么工程以及之后如何操作?在这谢谢各位,回答好的还可以加分,谢谢各位了这问题已经困扰我好几天了
------解决方案--------------------
用单文档做,拆分视图,然后用doc类来控制各个view之间数据的传送
------解决方案--------------------
笨办法是建立独立的两个带工具栏等的 exe 程序,由主程序根据按钮分别调用,可以在调用时暂时隐藏主程序窗口,子程序运行完毕之后再显示,这样就不用费心再去考虑其他的了。

窗口显示隐藏可以使用 ShowWindow 方法
启动一个程序并等待其运行结束可以使用如下函数

bool _ShellExecuteWait(CString pFileNameWithPara,CString pPath)
{
//不显示窗口的办法
//设置STARTUPINFO结构的wShowWindow成员为SW_HIDE   
//如果是命令行程序的话设置dwCreationFlags参数为CREATE_NO_WINDOW   

STARTUPINFO si;
    PROCESS_INFORMATION pi;

    ZeroMemory( &si, sizeof(si) );
    si.cb = sizeof(si);
si.wShowWindow=SW_HIDE;
    ZeroMemory( &pi, sizeof(pi) );
    // Start the child process. 
    if( !CreateProcess( NULL, // No module name (use command line). 
        (LPWSTR)(LPCTSTR)pFileNameWithPara,//(LPSTR)(LPCTSTR)m_rtf, // Command line. 
        NULL,             // Process handle not inheritable. 
        NULL,             // Thread handle not inheritable. 
        FALSE,            // Set handle inheritance to FALSE. 
        CREATE_NO_WINDOW,                // No creation flags. 
        NULL,             // Use parent's environment block. 
         (LPWSTR)(LPCTSTR)pPath,             // Use parent's starting directory.  注意这里是UNICODE的,如果是MBCS的去掉W即可
        &si,              // Pointer to STARTUPINFO structure.
        &pi )             // Pointer to PROCESS_INFORMATION structure.

    {
        _MSGBOX(_T("不能启动")+pFileNameWithPara);
return false;
    }

    // Wait until child process exits.
    WaitForSingleObject( pi.hProcess, INFINITE );

    // Close process and thread handles. 
    CloseHandle( pi.hProcess );
    CloseHandle( pi.hThread );
return true;
}

调用方法类似下面的,当然实际使用时不能使用绝对地址:

_ShellExecuteWait("d:\\a.exe","d:\\");