-// Default activation behaviour - set the focus for the first child
-// subwindow found.
-void wxFrame::OnActivate(wxActivateEvent& event)
-{
- for ( wxWindowList::Node *node = GetChildren().GetFirst();
- node;
- node = node->GetNext() )
+ // save the old position, width & height, maximize state
+ m_fsOldSize = GetRect();
+ m_fsIsMaximized = IsMaximized();
+
+ // decide which window style flags to turn off
+ LONG newStyle = m_fsOldWindowStyle;
+ LONG offFlags = 0;
+
+ if (style & wxFULLSCREEN_NOBORDER)
+ offFlags |= WS_BORDER | WS_THICKFRAME;
+ if (style & wxFULLSCREEN_NOCAPTION)
+ offFlags |= (WS_CAPTION | WS_SYSMENU);
+
+ newStyle &= (~offFlags);
+
+ // change our window style to be compatible with full-screen mode
+ ::SetWindowLong((HWND)GetHWND(), GWL_STYLE, newStyle);
+
+ // resize to the size of the desktop
+ int width, height;
+
+ RECT rect = wxGetWindowRect(::GetDesktopWindow());
+ width = rect.right - rect.left;
+ height = rect.bottom - rect.top;
+
+ SetSize(width, height);
+
+ // now flush the window style cache and actually go full-screen
+ SetWindowPos((HWND)GetHWND(), HWND_TOP, 0, 0, width, height, SWP_FRAMECHANGED);
+
+ wxSizeEvent event(wxSize(width, height), GetId());
+ GetEventHandler()->ProcessEvent(event);
+
+ return TRUE;
+ }
+ else