先要把问题想清楚。按一个按钮创建一个窗口是很容易的,可以直接用 WINAPI 中的 CreateWindowEx ,也可以利用 MFC 。但是 MainFrm 窗口,在 MFC 中是有特别意义的:它代表了整个程序的主框架窗口,而且 Frame 是要与一个 View 一个 Document 关联起来的,我想你应该不是这个意思吧?

解决方案 »

  1.   

    因为我想添加到工程中的是另一个MainFrm工程,所以才想问一下该怎么办。因为我不想做重复劳动。
      

  2.   

    不太明白,你的“添加到工程中的是另一个MainFrm工程”是什么意思?是指按一下按钮出现和以前写的一个程序完全一样的窗口吗?如果是那样的话,最简单的办法就是在按下按钮的时候调用以前写好的 EXE 执行文件。还是你另有它指?
      

  3.   

    这个想法不错!是用ShellExcute()?
      

  4.   

    如果是在一个工程view里调用另外一个工程,直接调用他的可执行文件旧可以啦!三个SDK函数 winexec, shellexecute,createprocess可以使用。
      

  5.   

    如果用createprocess,具体该怎么做?
      

  6.   

    如果用createprocess,具体该怎么做?
      

  7.   

    要用 createprocess ?给你个示例:STARTUPINFO StartUp_Info;
    PROCESS_INFORMATION Process_Info;StartUp_Info.cb = sizeof(STARTUPINFO);
    StartUp_Info.lpReserved = NULL;
    StartUp_Info.lpReserved2 = NULL;
    StartUp_Info.cbReserved2 = 0;StartUp_Info.lpDesktop = NULL;
    StartUp_Info.lpTitle = NULL;
    StartUp_Info.dwFlags = 0;BOOL CreateFlag = ::CreateProcess( NULL,
       szCommandLine,
       NULL,
       NULL,
       false,
       NORMAL_PRIORITY_CLASS,
       NULL,
       NULL,
       &StartUp_Info,
       &Process_Info );
    ……具体的参数意义和用法请参阅 MSDN。这很烦,所以若是你没有特殊要求,还是用 winexec 简单些:两个参数,第一个是命令行,就是路径和执行文件名,第二个是窗口的显示状态,用 SW_SHOW 就结了。