MFC 如何切换进程到前台

voidCPat1::OnButton1(){//TODO:AddyourcontrolnotificationhandlercodehereSleep(5000);之后... void CPat1::OnButton1()
{
// TODO: Add your control notification handler code here
Sleep(5000);
之后用什么代码能操作为点击这个按钮后选择另外一个程序运行
5秒后弹出此窗口的消息"111"并且把该程序转到前台运行(要求此程序前台显示并且任务栏和进程的焦点在此程序上)
AfxMessageBox("1111");
}

做过很多尝试
BringWindowToTop();
SetForegroundWindow();
SetWindowPos();
我是在线程中编的
有两种情况
1.前台显示了但是没有获得焦点,焦点是在当前窗口上
::SetWindowPos(pDlg->GetSafeHwnd(),HWND_TOPMOST,0,0,0,0,SWP_NOSIZE|SWP_NOMOVE);
pDlg->MessageBox("1111","1111",MB_OK|MB_TOPMOST);
::SetWindowPos(pDlg->GetSafeHwnd(),HWND_NOTOPMOST,0,0,0,0,SWP_NOSIZE|SWP_NOMOVE);

2.前台显示了但是messagebox内容却是当前选中的窗口子窗口而不是想要前台显示窗口的子窗口
中间那句为::MessageBox(GetForegroundWindow()->GetSafeHwnd(),"1111","1111",MB_OK|MB_TOPMOST);

还有就是看了又人说了
SwitchToThisWindow这个函数
但是照着他写的
typedef void (WINAPI *PROCSWITCHTOTHISWINDOW) (HWND, BOOL);

PROCSWITCHTOTHISWINDOW SwitchToThisWindow;

HMODULE hUser32 = GetModuleHandle( "user32 ");

SwitchToThisWindow = (PROCSWITCHTOTHISWINDOW)GetProcAddress(hUser32, "SwitchToThisWindow ");

这个编译之后却提示
error C2501: 'SwitchToThisWindow' : missing storage-class or type specifiers

请高人帮忙解答下,怎么才能做到
展开
 我来答
kl535
2011-08-29 · TA获得超过130个赞
知道小有建树答主
回答量:194
采纳率:0%
帮助的人:73.7万
展开全部
SetForegroundWindow();
多试几次,最好弄个循环
追问
SetForegroundWindow();不管用啊 只能显示在最前但不能激活 也就是看着窗口在最前面 其实焦点在其他窗口
追答
SetFocus
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式