}
// ----------------------------------------------------------------------------
-// wxTopLevelWindowMSW geometry
+// wxTopLevelWindowMSW client size
// ----------------------------------------------------------------------------
void wxTopLevelWindowMSW::DoSetClientSize(int width, int height)
{
- HWND hWnd = GetHwnd();
-
- RECT rectClient;
- ::GetClientRect(hWnd, &rectClient);
+ // call GetClientAreaOrigin() to take the toolbar into account
+ wxPoint pt = GetClientAreaOrigin();
+ width += pt.x;
+ height += pt.y;
- RECT rectTotal;
- ::GetWindowRect(hWnd, &rectTotal);
+ wxWindow::DoSetClientSize(width, height);
+}
- // Find the difference between the entire window (title bar and all)
- // and the client area; add this to the new client size to move the
- // window
- width += rectTotal.right - rectTotal.left - rectClient.right;
- height += rectTotal.bottom - rectTotal.top - rectClient.bottom;
+void wxTopLevelWindowMSW::DoGetClientSize(int *x, int *y) const
+{
+ wxWindow::DoGetClientSize(x, y);
- // note that calling GetClientAreaOrigin() takes the toolbar into account
wxPoint pt = GetClientAreaOrigin();
- width += pt.x;
- height += pt.y;
- if ( !::MoveWindow(hWnd, rectTotal.left, rectTotal.top,
- width, height, TRUE /* redraw */) )
- {
- wxLogLastError(_T("MoveWindow"));
- }
+ if ( x )
+ *x -= pt.x;
- wxSizeEvent event(wxSize(width, height), m_windowId);
- event.SetEventObject(this);
- (void)GetEventHandler()->ProcessEvent(event);
+ if ( y )
+ *y -= pt.y;
}
// ----------------------------------------------------------------------------