如何让窗口显示在最前端
窗口不能通过SetWindowPos(&wndTopMost, 0, 0, 0, 0,SWP_NOSIZE | SWP_NOMOVE);
一直在处于最前端;
当窗口在后台的时候,当收到某些信息,要把自己显示到最前端;
该如何实现;
SetActiveWindow();
SetForegroundWindow();
使用这些函数好像都不能实现;
谢谢;
问题点数:100、回复次数:12Top
1 楼hxzmm()回复于 2006-11-02 18:09:27 得分 0
BringWindowToTop
只能把窗口放到最前端,不能激活窗口!!Top
2 楼sunmono(太阳)回复于 2006-11-02 18:17:34 得分 0
BringWindowToTop
试过了
但是不能放到最前端Top
3 楼119365374(砖头)回复于 2006-11-02 18:30:34 得分 0
ShowWindow(SW_SHOW),不行么?
曾经因为皮肤的问题写过这样的代码,看对你有用不:
m_dlgXXXX.SetWindowPos(
&wndTopMost,
::GetSystemMetrics(SM_CXSCREEN)/2-rect.Width()/2,
::GetSystemMetrics(SM_CYSCREEN)/2-rect.Height()/2,
rect.Width(),
rect.Height(),
SWP_SHOWWINDOW);
m_dlgXXXX.SetWindowPos(
&wndNoTopMost,
::GetSystemMetrics(SM_CXSCREEN)/2-rect.Width()/2,
::GetSystemMetrics(SM_CYSCREEN)/2-rect.Height()/2,
rect.Width(),
rect.Height(),
SWP_SHOWWINDOW);Top
4 楼sunmono(太阳)回复于 2006-11-02 18:34:22 得分 0
不会在最前端的Top
5 楼mynamelj(风之羽翼)回复于 2006-11-02 18:39:44 得分 0
试试这段代码
void PlacedWindowTop(CWnd* pWnd)
{
ASSERT_VALID(pWnd);
ASSERT(::IsWindow(pWnd->m_hWnd));
if(pWnd->IsIconic())
pWnd->ShowWindow(SW_RESTORE);
else if(pWnd->IsWindowVisible())
pWnd->SetForegroundWindow();
else
pWnd->ShowWindow(SW_SHOW);
}Top
6 楼mynamelj(风之羽翼)回复于 2006-11-02 18:50:33 得分 0
当窗口在后台的时候,当收到某些信息,要把自己显示到最前端;
------------------
当窗口在后台的时候,这是什么意思,隐藏了吗?
如果设置wndTopMost属性,窗口隐藏后直接用ShowWindow(SW_SHOW)就可显示出来.Top
7 楼breakind(冰舞,把练街舞的精神拿来编程,必有所成.)回复于 2006-11-02 18:59:29 得分 0
setwindowposTop
8 楼breakout()回复于 2006-11-02 19:00:38 得分 0
曾经写控制台程序时用到的always on top的方法:
CRect rect;
GetWindowRect(&rect);
::SetWindowPos(GetSafeHwnd(), HWND_NOTOPMOST,rect.left, rect.top,
rect.right-rect.left, rect.bottom-rect.top,
SWP_SHOWWINDOW );Top
9 楼xyz666((我是一只怪怪虫up ~up))回复于 2006-11-02 20:05:42 得分 0
SetWindowPos或者
CWnd *pWnd = CWnd::FindWindow(NULL, _T("XXX") );
pWnd->ShowWindow(SW_RESTORE);
pWnd->SetForegroundWindow();
Top
10 楼Aaron_Jerry(音乐诗人)回复于 2006-11-02 20:40:13 得分 0
SetWindowPos(&wndTopMost , -1, -1, -1, -1, SWP_NOMOVE|SWP_NOSIZE);Top
11 楼sunmono(太阳)回复于 2006-11-03 10:44:37 得分 0
窗口不设置wndTopMost属性;
在后台就是他不是当前激活的窗口 被其他窗口覆盖了;Top
12 楼sunmono(太阳)回复于 2006-11-03 10:48:45 得分 0
ShowWindow( SW_SHOWNORMAL);
SetActiveWindow();
SetForegroundWindow();
BringWindowToTop()
都没效果
只有用SwitchToThisWindow(m_hWnd,TRUE);有一些效果,但是效果不好;Top




