CreateProcess创建进程后父子进程怎么实现模态对话框的效果?高手请指点

CreateProcess创建进程后父子进程如何实现模态对话框的效果?高手请指点!
在主程序中要启用一个exe程序使用,当启动exe程序后,主程序不能被操作,直到启动的exe程序被关闭,点击主程序界面时,自动将焦点集中到exe程序上,效果类似主程序中打开模态对话框。 类似代码如下:

void CMainFrame::OnOpenExe( )
{
STARTUPINFO sui;
ZeroMemory(&sui,sizeof(STARTUPINFO));
sui.cb=sizeof(STARTUPINFO);

PROCESS_INFORMATION pi;
DWORD dwExitCode;
BOOL fSuccess = CreateProcess("C:\\Windows\\system32\\notepad.exe", "\"notepad.exe\" \"E:\\Buf2\\code.txt\"",NULL,NULL,TRUE,0,NULL,NULL,&sui,&pi);//启动记事本打开默认文件

if(fSuccess)
{
CloseHandle(pi.hThread);
WaitForSingleObject(pi.hProcess,INFINITE);
GetExitCodeProcess(pi.hProcess, &dwExitCode);
CloseHandle(pi.hProcess);
...
}
}

当前在点击主程序界面时如同程序死掉,不能把焦点集中到notepad.exe上,没有达到模态对话框的效果,请高手指点!


------解决方案--------------------
C/C++ code
TCHAR szApp[] =  _T("Notepad");
    STARTUPINFO si = { sizeof(si) };   
    PROCESS_INFORMATION pi = {0};   

    if(CreateProcess (NULL, szApp, NULL, NULL, FALSE, DEBUG_ONLY_THIS_PROCESS, NULL, NULL, &si, &pi))
    {
        DEBUG_EVENT evt = {0};   
        while (EXIT_PROCESS_DEBUG_EVENT != evt.dwDebugEventCode)   
        {   
            if (WaitForDebugEvent(&evt, 100))   
            {   
                ContinueDebugEvent(evt.dwProcessId, evt.dwThreadId, DBG_CONTINUE);   
            }

            MSG msg;
            while(PeekMessage(&msg, NULL, 0, 0, PM_REMOVE))
            {
                if(WM_PAINT == msg.message)
                {
                    TranslateMessage(&msg);
                    DispatchMessage(&msg);    
                }                                                    
            }
        }        
        CloseHandle(pi.hThread);
        CloseHandle(pi.hProcess);
        ::SetForegroundWindow(GetSafeHwnd());
    }

------解决方案--------------------
可以单步调试跟到DoMadol函数中参考一下他对主窗口的处理
我就不在这贴代码了
------解决方案--------------------
用MsgWaitForMultipleObjects,这样你才能处理主程序的界面消息。
------解决方案--------------------
我最近的一个项目也涉及到这个问题了,不过我是在被启动的模块中,让它显示在最前面。
有时候问题正面不太好解决,可以换个方向想一下。
给你个建议。