如何让一个进程控制另一进程的窗口显示在最前端?

bigant888 2005-08-25 05:28:49
我想让我的一个程序A发消息到另一程序B(都是自己写的),让程序B完成一定的操作后显示到最前端!
现在程序B可以收到消息了,就是不能显示到最前端。
望各位大虾帮帮忙~急~~~
...全文
466 9 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
bigant888 2005-08-25
  • 打赏
  • 举报
回复
呵呵,我是想受消息的,放在最上面,
我写了两个,都是指受消息的窗口~、
现在好了,~谢谢~
bigant888 2005-08-25
  • 打赏
  • 举报
回复
好了,谢谢两位,现在结贴~
goodboyws 2005-08-25
  • 打赏
  • 举报
回复
你是发消息的在上面还是接收消息的在上面呢,两个都在最上面是怎么回事儿??
void CPostMsgView::OnPost()
{
// TODO: Add your command handler code here

HWND hPlayerHwnd = GetMessageHWND();
if (hPlayerHwnd != NULL)
{
::PostMessage(hPlayerHwnd, WM_COMMAND,IDM_CHANGEARTICLE,0);
//这两句注掉
// ::SetForegroundWindow(hPlayerHwnd);
// ::ShowWindow(hPlayerHwnd,SW_SHOW);
}
gohappy_1999 2005-08-25
  • 打赏
  • 举报
回复
CWnd *pTopWnd = CWnd::FromHandle(g_hWnd);
if(pTopWnd->IsIconic())
{
pTopWnd->ShowWindow(SW_MAXIMIZE);
}
pTopWnd->SetForegroundWindow();
bigant888 2005-08-25
  • 打赏
  • 举报
回复
to 回复人: goodboyws(深夜不眠者) ( ) 信誉:92
对不起,还是不行,
我的测试程序是两个单文档的结构,程序得到的是CMainFrame的 HWND
这个是发消息的程序的函数
void CPostMsgView::OnPost()
{
// TODO: Add your command handler code here

HWND hPlayerHwnd = GetMessageHWND();
if (hPlayerHwnd != NULL)
{
::PostMessage(hPlayerHwnd, WM_COMMAND,IDM_CHANGEARTICLE,0);
// ::SetWindowPos(hPlayerHwnd, HWND_TOP, 0, 0, 800, 600, SWP_SHOWWINDOW|SWP_NOMOVE|SWP_NOSIZE);
::SetForegroundWindow(hPlayerHwnd);
::ShowWindow(hPlayerHwnd,SW_SHOW);
}

下面的收消息的函数
void CRecieveMsgView::OnRecieveTheMsg()
{
ShowWindow(SW_SHOW);
SetForegroundWindow();
}

这样最小话的时候还是都不行,是不是我哪里用的不对~
goodboyws 2005-08-25
  • 打赏
  • 举报
回复

ShowWindow(hWnd,SW_SHOW);
SetForegroundWindow(hWnd);
bigant888 2005-08-25
  • 打赏
  • 举报
回复
to 回复人: goodboyws(深夜不眠者) ( ) 信誉:92
这个方法可以,但最小话的时候还是不行,怎么处理~
谢谢~
goodboyws 2005-08-25
  • 打赏
  • 举报
回复
调用
BOOL SetForegroundWindow(
HWND hWnd // handle to window
);
i_noname 2005-08-25
  • 打赏
  • 举报
回复
最前端窗口:
SetWindowPos(&wndTopMost, -1, -1, -1, -1, SWP_NOMOVE|SWP_NOSIZE);

15,473

社区成员

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

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