Fixed an issue that AlwaysOnTop=-1/-2 fails on startup.

This commit is contained in:
spx 2010-11-26 16:17:23 +00:00
parent 2186b2eb2a
commit 78cb8b2543

View File

@ -536,19 +536,18 @@ void CMeterWindow::MoveWindow(int x, int y)
*/ */
void CMeterWindow::ChangeZPos(ZPOSITION zPos, bool all) void CMeterWindow::ChangeZPos(ZPOSITION zPos, bool all)
{ {
#define ZPOS_FLAGS (SWP_NOMOVE | SWP_NOSIZE | SWP_NOOWNERZORDER | SWP_NOACTIVATE | SWP_NOSENDCHANGING)
if(!m_ChildWindow) if(!m_ChildWindow)
{ {
m_WindowZPosition = zPos;
HWND winPos = HWND_NOTOPMOST; HWND winPos = HWND_NOTOPMOST;
UINT flags = SWP_NOMOVE | SWP_NOSIZE | SWP_NOACTIVATE | SWP_NOSENDCHANGING; m_WindowZPosition = zPos;
switch (zPos) switch (zPos)
{ {
case ZPOSITION_ONTOPMOST: case ZPOSITION_ONTOPMOST:
case ZPOSITION_ONTOP: case ZPOSITION_ONTOP:
winPos = HWND_TOPMOST; winPos = HWND_TOPMOST;
flags |= SWP_NOOWNERZORDER;
break; break;
case ZPOSITION_ONBOTTOM: case ZPOSITION_ONBOTTOM:
@ -574,15 +573,13 @@ void CMeterWindow::ChangeZPos(ZPOSITION zPos, bool all)
case ZPOSITION_ONDESKTOP: case ZPOSITION_ONDESKTOP:
if (CSystem::GetShowDesktop()) if (CSystem::GetShowDesktop())
{ {
flags |= SWP_NOOWNERZORDER;
// Set WS_EX_TOPMOST flag // Set WS_EX_TOPMOST flag
SetWindowPos(m_Window, HWND_TOPMOST, 0, 0, 0, 0, flags); SetWindowPos(m_Window, HWND_TOPMOST, 0, 0, 0, 0, ZPOS_FLAGS);
if (all) if (all)
{ {
// Insert after the helper window // Insert after the helper window
SetWindowPos(m_Window, CSystem::GetHelperWindow(), 0, 0, 0, 0, flags); SetWindowPos(m_Window, CSystem::GetHelperWindow(), 0, 0, 0, 0, ZPOS_FLAGS);
} }
else else
{ {
@ -593,7 +590,7 @@ void CMeterWindow::ChangeZPos(ZPOSITION zPos, bool all)
if (GetWindowLong(hwnd, GWL_EXSTYLE) & WS_EX_TOPMOST) if (GetWindowLong(hwnd, GWL_EXSTYLE) & WS_EX_TOPMOST)
{ {
// Insert after the found window // Insert after the found window
if (0 != SetWindowPos(m_Window, hwnd, 0, 0, 0, 0, flags)) if (0 != SetWindowPos(m_Window, hwnd, 0, 0, 0, 0, ZPOS_FLAGS))
{ {
break; break;
} }
@ -617,7 +614,7 @@ void CMeterWindow::ChangeZPos(ZPOSITION zPos, bool all)
break; break;
} }
SetWindowPos(m_Window, winPos, 0, 0, 0, 0, flags); SetWindowPos(m_Window, winPos, 0, 0, 0, 0, ZPOS_FLAGS);
} }
} }