如何让启用线程的窗口为前端活动窗口

draeag 2010-01-21 11:01:13
CDlg1窗口的按钮事件中开启线程
handle = _beginthreadex(0,0,ThreadFun,(LPVOID)this, 0, 0);


线程处理函数:
unsigned __stdcall ThreadFun(void * parameter)
{
CDlg1 * pDlg1 = (CDlg1 *)parameter;

pDlg1->ShowWindow(FALSE);
CDlg2 dlg;
INT_PTR ret = dlg.DoModal();
if (IDOK == ret)
{
pDlg1->EndDialog(0);

}
else if(IDCANCEL == ret)
{
pDlg1->EndDialog(1);
}
else //这里会出现问题:就是pDlg1这个窗口会跑到其它窗口的后面,不再是活动窗口,有什么办法解决
{
pDlg1->SetFocus();
pDlg1->ShowWindow(TRUE);
}
}
...全文
70 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
jimustudio 2010-01-25
  • 打赏
  • 举报
回复
pDlg1->SetForegroundWindow();
marrco2005 2010-01-22
  • 打赏
  • 举报
回复
else //这里会出现问题:就是pDlg1这个窗口会跑到其它窗口的后面,不再是活动窗口,有什么办法解决
{
pDlg1->SetFocus();
pDlg1->ShowWindow(TRUE);
::BringWindowToTop( pDlg1->GetSafeHwnd())
}
}

这样就可以了
xing558969 2010-01-21
  • 打赏
  • 举报
回复
把新启动窗口的topmost属性设为TRUE

15,471

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 进程/线程/DLL
社区管理员
  • 进程/线程/DLL社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧