diff --git a/src/Draw/Draw_Window.cxx b/src/Draw/Draw_Window.cxx index c3d778abf1..8710e735dd 100755 --- a/src/Draw/Draw_Window.cxx +++ b/src/Draw/Draw_Window.cxx @@ -18,11 +18,6 @@ // purpose or non-infringement. Please see the License for the specific terms // and conditions governing the rights and limitations under the License. -// Updated by DPF Fri Mar 21 18:40:58 1997 -// Added casting in void to compile -// on AO1 int 32 bits -> pointer 64 bits ???? -// Robert Boehne 30 May 2000 : Dec Osf - // include windows.h first to have all definitions available #ifdef WNT #include @@ -1474,13 +1469,19 @@ void DrawWindow::Init(Standard_Integer theXLeft, Standard_Integer theYTop, // include decorations in the window dimensions // to reproduce same behaviour of Xlib window. - theXLeft -= GetSystemMetrics(SM_CXSIZEFRAME); - theYTop -= GetSystemMetrics(SM_CYSIZEFRAME) + GetSystemMetrics(SM_CYCAPTION); - theWidth += 2 * GetSystemMetrics(SM_CXSIZEFRAME); - theHeight += 2 * GetSystemMetrics(SM_CYSIZEFRAME) + GetSystemMetrics(SM_CYCAPTION); + DWORD aWinStyle = GetWindowLongPtr (win, GWL_STYLE); + DWORD aWinStyleEx = GetWindowLongPtr (win, GWL_EXSTYLE); + HMENU aMenu = GetMenu (win); - SetPosition (theXLeft, theYTop); - SetDimension (theWidth, theHeight); + RECT aRect; + aRect.top = theYTop; + aRect.bottom = theYTop + theHeight; + aRect.left = theXLeft; + aRect.right = theXLeft + theWidth; + AdjustWindowRectEx (&aRect, aWinStyle, aMenu != NULL ? TRUE : FALSE, aWinStyleEx); + + SetPosition (aRect.left, aRect.top); + SetDimension (aRect.right - aRect.left, aRect.bottom - aRect.top); // Save the pointer at the instance associated to the window SetWindowLong(win, CLIENTWND, (LONG)this); HDC hDC = GetDC(win); diff --git a/src/WNT/WNT_Window.cxx b/src/WNT/WNT_Window.cxx index 134e1e6427..8c617da8a9 100755 --- a/src/WNT/WNT_Window.cxx +++ b/src/WNT/WNT_Window.cxx @@ -119,15 +119,18 @@ WNT_Window::WNT_Window (const Handle(WNT_GraphicDevice)& theDevice, dwStyle |= WS_CLIPCHILDREN; } - if (dwStyle & WS_OVERLAPPEDWINDOW) - { - // include decorations in the window dimensions - // to reproduce same behaviour of Xw_Window. - aXLeft -= GetSystemMetrics(SM_CXSIZEFRAME); - aYTop -= GetSystemMetrics(SM_CYSIZEFRAME) + GetSystemMetrics(SM_CYCAPTION); - aXRight += GetSystemMetrics(SM_CXSIZEFRAME); - aYBottom += GetSystemMetrics(SM_CYSIZEFRAME); - } + // include decorations in the window dimensions + // to reproduce same behaviour of Xw_Window. + RECT aRect; + aRect.top = aYTop; + aRect.bottom = aYBottom; + aRect.left = aXLeft; + aRect.right = aXRight; + AdjustWindowRect (&aRect, dwStyle, theMenu != NULL ? TRUE : FALSE); + aXLeft = aRect.left; + aYTop = aRect.top; + aXRight = aRect.right; + aYBottom = aRect.bottom; myHWindow = CreateWindow ( myWClass->Name(), // window's class name @@ -198,15 +201,18 @@ WNT_Window::WNT_Window (const Handle(WNT_GraphicDevice)& theDevice, dwStyle |= WS_CLIPCHILDREN; } - if (dwStyle & WS_OVERLAPPEDWINDOW) - { - // include decorations in the window dimensions - // to reproduce same behaviour of Xw_Window. - aXLeft -= GetSystemMetrics(SM_CXSIZEFRAME); - aYTop -= GetSystemMetrics(SM_CYSIZEFRAME) + GetSystemMetrics(SM_CYCAPTION); - aXRight += GetSystemMetrics(SM_CXSIZEFRAME); - aYBottom += GetSystemMetrics(SM_CYSIZEFRAME); - } + // include decorations in the window dimensions + // to reproduce same behaviour of Xw_Window. + RECT aRect; + aRect.top = aYTop; + aRect.bottom = aYBottom; + aRect.left = aXLeft; + aRect.right = aXRight; + AdjustWindowRect (&aRect, dwStyle, theMenu != NULL ? TRUE : FALSE); + aXLeft = aRect.left; + aYTop = aRect.top; + aXRight = aRect.right; + aYBottom = aRect.bottom; myHWindow = CreateWindow ( myWClass->Name(), // window's class name