MFC将其他EXE镶入对话框中的问题·高手请解答

qq_21961039 qq_21961039 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
HANDLE hProcess;
HWND apphWnd = NULL;


int CALLBACK EnumWindowsProc(HWND hwnd, LPARAM lParam)
{
DWORD pID;
DWORD tpID = GetWindowThreadProcessId(hwnd,&pID);
if(tpID == (DWORD)lParam)
{
apphWnd = hwnd;
return false;
}
return true;
}




HANDLE StartProcess(LPCTSTR program, LPCTSTR args)
{
HANDLE hPro = NULL;
PROCESS_INFORMATION processInfo;
STARTUPINFO startupInfo;
::ZeroMemory(&startupInfo, sizeof(startupInfo));
startupInfo.cb = sizeof(startupInfo);
//设置进程创建时不显示窗口
//startupInfo.dwFlags = /*STARTF_USEPOSITION*/STARTF_USESHOWWINDOW;
startupInfo.dwFlags = STARTF_USEPOSITION;//STARTF_USESHOWWINDOW;
startupInfo.dwX = 600;
startupInfo.dwY = 900;
startupInfo.wShowWindow = SW_HIDE;
if(::CreateProcess(program, (LPTSTR)args,
NULL, // process security
NULL, // thread security
FALSE, // no inheritance
0, // no startup flags
NULL, // no special environment
NULL, // default startup directory
&startupInfo,
&processInfo))
{
//延迟0.5s,等待进程创建成功
Sleep(500);
while(true)
{
::EnumWindows(&EnumWindowsProc, processInfo.dwThreadId);//Iterate all windows
if(NULL != apphWnd)
break;
}
hPro = processInfo.hProcess;

}
return hPro;
}







if(apphWnd != NULL)
{
OnQuit();
}

CRect rect;
GetClientRect(&rect);//get our dialog size into rect
hProcess=StartProcess("我的工具.exe","");//Start ms paint
if(apphWnd!=NULL)//check for window handle
{

::SetParent(apphWnd,m_hWnd);//set parent of ms paint to our dialog.
SetWindowLong(apphWnd, GWL_STYLE, WS_VISIBLE);//eraze title of ms paint window.
//Positioning ms paint.
::MoveWindow(apphWnd, rect.left, rect.top,rect.right, rect.bottom, true);
//窗口重绘,(因创建exe时,设置为SW_HIDE,导致exe窗口会被父窗口覆盖一部分)
Invalidate();
::UpdateWindow(apphWnd);
::ShowWindow(apphWnd,SW_SHOW);
}
else
MessageBox("Cannot find Window");






OnQuit()
{
TerminateProcess(hProcess,0);
apphWnd = NULL;
}



运行后第一个画面没有问题 已经镶入进去 如下图



但程序正式启动后 就变了,位置不对

跑到最下面去了

请问怎么解决
...全文

相关推荐

评论 16
收藏 已收藏
分享
返回顶部
qq_21961039
VC/MFC 16,550 成员 421,606 内容