SetForegroundWindow(HWND hwnd)不起作用是怎么回事 hwnd是我当前程序的子进程的主窗口句柄,我在父进程的主框架被激活时调用SetWindowPos(hwnd,HWND_TOPMOST,....),SetForegroundWindow(hwnd)的时候子进程窗口并没有被调到最前,不知道有没有大侠遇到过这样的情况,请帮忙指点迷津 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 光用SetForegroundWindow是不能把窗口提到最前面的。下面的代码是把自己的窗口提到最前面,换一下窗口句柄就应该可以了。 DWORD ID1,ID2; ID1=::GetWindowThreadProcessId(::GetForegroundWindow(),NULL); ID2=::GetWindowThreadProcessId(m_hWnd,NULL); ::AttachThreadInput(ID1,ID2,TRUE); ::SetForegroundWindow(m_hWnd); ::AttachThreadInput(ID1,ID2,FALSE); 使用SetWindowPos,接着使用SetForegroundWindow,有些时候必须这样才行:SetWindowPos(hWnd,HWND_TOP,//MOST, wWindowLeft,wWindowTop,0,0, SWP_NOSIZE|SWP_SHOWWINDOW);SetForegroundWindow(hWnd);不行再加上SetFocus( hWnd );如果要把其它进程的窗口带到前台需要调用 AttachThreadInput, 下面的内容来自 vckbase---------------------如何在2K/xp下使窗口获取焦点在2K/XP下我们可以用 AttachThreadInput 和SetForegroundWindow来有效的获取焦点。//捕捉并设置当前焦点窗口为我们的窗口AttachThreadInput( GetWindowThreadProcessId( ::GetForegroundWindow(),NULL), GetCurrentThreadId(),TRUE);//置我们的为焦点窗口SetForegroundWindow();SetFocus(); //释放threadAttachThreadInput( GetWindowThreadProcessId( ::GetForegroundWindow(),NULL), GetCurrentThreadId(),FALSE); SetForegroundWindow只能使窗口获得焦点,并不能弹到最前面BringtoTop SetWindowPos(&wndBottom,0,0,0,0,SWP_SHOWWINDOW | SWP_NOMOVE | SWP_NOSIZE);//先放到最后SetWindowPos(&wndTop,0,0,0,0,SWP_SHOWWINDOW | SWP_NOMOVE | SWP_NOSIZE);//在调就可以了 如何读取谷歌和火狐浏览器的书签? 关于上网的心态 急!!!dll 请教各位MFC高人,MFC对<valarray>模板是不是有冲突,该如何解决 在对话框上画直线,如果超过对话框的范围,怎么使对话框自动添加Scroll? 一个SDK编程的问题? 一个BSTR 的CLSID 怎样转换为GUID 怎样实现局域网中语音传输??? 第一个小程序收工,心情很佳,散分,再问一个问题? string.h中哪个是从一个字符串中取子字符串的函数?? 求ATL教程下载!谢谢 问个简单的问题
ID1=::GetWindowThreadProcessId(::GetForegroundWindow(),NULL);
ID2=::GetWindowThreadProcessId(m_hWnd,NULL);
::AttachThreadInput(ID1,ID2,TRUE);
::SetForegroundWindow(m_hWnd);
::AttachThreadInput(ID1,ID2,FALSE);
SetWindowPos(hWnd,HWND_TOP,//MOST,
wWindowLeft,wWindowTop,0,0,
SWP_NOSIZE|SWP_SHOWWINDOW);
SetForegroundWindow(hWnd);
不行再加上SetFocus( hWnd );
如果要把其它进程的窗口带到前台需要调用 AttachThreadInput,
下面的内容来自 vckbase---------------------
如何在2K/xp下使窗口获取焦点
在2K/XP下我们可以用 AttachThreadInput 和SetForegroundWindow来有效的获取焦点。//捕捉并设置当前焦点窗口为我们的窗口
AttachThreadInput(
GetWindowThreadProcessId(
::GetForegroundWindow(),NULL),
GetCurrentThreadId(),TRUE);//置我们的为焦点窗口
SetForegroundWindow();
SetFocus(); //释放thread
AttachThreadInput(
GetWindowThreadProcessId(
::GetForegroundWindow(),NULL),
GetCurrentThreadId(),FALSE);
BringtoTop
SetWindowPos(&wndTop,0,0,0,0,SWP_SHOWWINDOW | SWP_NOMOVE | SWP_NOSIZE);//在调就可以了