]> git.saurik.com Git - wxWidgets.git/blobdiff - src/msw/frame.cpp
OS/2 fixes for this week.
[wxWidgets.git] / src / msw / frame.cpp
index 8b0ff3270d7f35acfb34e3b3baddadcfc986a644..ee461db1be228615cb670c846405b1998a39c7ab 100644 (file)
@@ -80,7 +80,9 @@ BEGIN_EVENT_TABLE(wxFrameMSW, wxFrameBase)
     EVT_SYS_COLOUR_CHANGED(wxFrameMSW::OnSysColourChanged)
 END_EVENT_TABLE()
 
-IMPLEMENT_DYNAMIC_CLASS(wxFrameMSW, wxWindow)
+#ifndef __WXUNIVERSAL__
+    IMPLEMENT_DYNAMIC_CLASS(wxFrame, wxWindow)
+#endif
 
 // ============================================================================
 // implementation
@@ -137,15 +139,6 @@ bool wxFrameMSW::Create(wxWindow *parent,
 {
   SetName(name);
   m_windowStyle = style;
-#if wxUSE_MENUS
-  m_frameMenuBar = NULL;
-#endif // wxUSE_MENUS
-#if wxUSE_TOOLBAR
-  m_frameToolBar = NULL;
-#endif // wxUSE_TOOLBAR
-#if wxUSE_STATUSBAR
-  m_frameStatusBar = NULL;
-#endif // wxUSE_STATUSBAR
 
   SetBackgroundColour(wxSystemSettings::GetSystemColour(wxSYS_COLOUR_APPWORKSPACE));
 
@@ -379,21 +372,31 @@ void wxFrameMSW::Restore()
 
 bool wxFrameMSW::IsIconized() const
 {
+#ifdef __WXMICROWIN__
+  // TODO
+  return FALSE;
+#else
   ((wxFrameMSW *)this)->m_iconized = (::IsIconic(GetHwnd()) != 0);
   return m_iconized;
+#endif
 }
 
 // Is it maximized?
 bool wxFrameMSW::IsMaximized() const
 {
+#ifdef __WXMICROWIN__
+  // TODO
+  return FALSE;
+#else
     return (::IsZoomed(GetHwnd()) != 0);
+#endif
 }
 
 void wxFrameMSW::SetIcon(const wxIcon& icon)
 {
     wxFrameBase::SetIcon(icon);
 
-#if defined(__WIN95__)
+#if defined(__WIN95__) && !defined(__WXMICROWIN__)
     if ( m_icon.Ok() )
     {
         SendMessage(GetHwnd(), WM_SETICON,
@@ -403,7 +406,7 @@ void wxFrameMSW::SetIcon(const wxIcon& icon)
 }
 
 // generate an artificial resize event
-void wxFrame::SendSizeEvent()
+void wxFrameMSW::SendSizeEvent()
 {
     RECT r;
 #ifdef __WIN16__
@@ -474,24 +477,12 @@ void wxFrameMSW::PositionStatusBar()
 }
 #endif // wxUSE_STATUSBAR
 
-void wxFrameMSW::DetachMenuBar()
-{
-#if wxUSE_MENUS
-    if ( m_frameMenuBar )
-    {
-        m_frameMenuBar->Detach();
-        m_frameMenuBar = NULL;
-    }
-#endif // wxUSE_MENUS
-}
+#if wxUSE_MENUS_NATIVE
 
-void wxFrameMSW::SetMenuBar(wxMenuBar *menubar)
+void wxFrameMSW::AttachMenuBar(wxMenuBar *menubar)
 {
-#if wxUSE_MENUS
-    // detach the old menu bar in any case
-    DetachMenuBar();
+    m_frameMenuBar = menubar;
 
-#if wxUSE_MENUS_NATIVE
     if ( !menubar )
     {
         // actually remove the menu from the frame
@@ -507,7 +498,8 @@ void wxFrameMSW::SetMenuBar(wxMenuBar *menubar)
         }
         else
         {
-            menubar->Detach();
+            if ( menubar->IsAttached() )
+                menubar->Detach();
 
             m_hMenu = menubar->Create();
 
@@ -517,24 +509,16 @@ void wxFrameMSW::SetMenuBar(wxMenuBar *menubar)
 
         InternalSetMenuBar();
     }
-#endif // wxUSE_MENUS_NATIVE
-
-    if ( menubar )
-    {
-        m_frameMenuBar = menubar;
-        menubar->Attach((wxFrame *)this);
-    }
-#endif // wxUSE_MENUS
 }
 
-#if wxUSE_MENUS_NATIVE
-
 void wxFrameMSW::InternalSetMenuBar()
 {
+#ifndef __WXMICROWIN__
     if ( !::SetMenu(GetHwnd(), (HMENU)m_hMenu) )
     {
         wxLogLastError(wxT("SetMenu"));
     }
+#endif
 }
 
 #endif // wxUSE_MENUS_NATIVE
@@ -583,8 +567,10 @@ bool wxFrameMSW::ShowFullScreen(bool show, long style)
         }
 #endif // wxUSE_TOOLBAR
 
+#ifndef __WXMICROWIN__
         if (style & wxFULLSCREEN_NOMENUBAR)
             SetMenu((HWND)GetHWND(), (HMENU) NULL);
+#endif
 
 #if wxUSE_STATUSBAR
         wxStatusBar *theStatusBar = GetStatusBar();
@@ -674,8 +660,10 @@ bool wxFrameMSW::ShowFullScreen(bool show, long style)
         }
 #endif // wxUSE_STATUSBAR
 
+#ifndef __WXMICROWIN__
         if ((m_fsStyle & wxFULLSCREEN_NOMENUBAR) && (m_hMenu != 0))
             SetMenu((HWND)GetHWND(), (HMENU)m_hMenu);
+#endif
 
         Maximize(m_fsIsMaximized);
         SetWindowLong((HWND)GetHWND(),GWL_STYLE, m_fsOldWindowStyle);
@@ -907,7 +895,7 @@ void wxFrameMSW::IconizeChildFrames(bool bIconize)
 
         // the child MDI frames are a special case and should not be touched by
         // the parent frame - instead, they are managed by the user
-        wxFrameMSW *frame = wxDynamicCast(win, wxFrameMSW);
+        wxFrameMSW *frame = wxDynamicCast(win, wxFrame);
         if ( frame
 #if wxUSE_MDI_ARCHITECTURE
                 && !wxDynamicCast(frame, wxMDIChildFrame)
@@ -954,6 +942,7 @@ bool wxFrameMSW::HandlePaint()
     RECT rect;
     if ( GetUpdateRect(GetHwnd(), &rect, FALSE) )
     {
+#ifndef __WXMICROWIN__
         if ( m_iconized )
         {
             HICON hIcon = m_icon.Ok() ? GetHiconOf(m_icon)
@@ -987,6 +976,7 @@ bool wxFrameMSW::HandlePaint()
             return TRUE;
         }
         else
+ #endif
         {
             return wxWindow::HandlePaint();
         }
@@ -1001,6 +991,7 @@ bool wxFrameMSW::HandlePaint()
 bool wxFrameMSW::HandleSize(int x, int y, WXUINT id)
 {
     bool processed = FALSE;
+#ifndef __WXMICROWIN__
 
     switch ( id )
     {
@@ -1031,6 +1022,7 @@ bool wxFrameMSW::HandleSize(int x, int y, WXUINT id)
             m_iconized = TRUE;
             break;
     }
+#endif
 
     if ( !m_iconized )
     {
@@ -1090,10 +1082,12 @@ bool wxFrameMSW::HandleMenuSelect(WXWORD nItem, WXWORD flags, WXHMENU hMenu)
         // menu was removed from screen
         item = -1;
     }
+#ifndef __WXMICROWIN__
     else if ( !(flags & MF_POPUP) && !(flags & MF_SEPARATOR) )
     {
         item = nItem;
     }
+#endif
     else
     {
 #if wxUSE_STATUSBAR
@@ -1145,6 +1139,7 @@ long wxFrameMSW::MSWWindowProc(WXUINT message, WXWPARAM wParam, WXLPARAM lParam)
             }
             break;
 
+#ifndef __WXMICROWIN__
         case WM_MENUSELECT:
             {
                 WXWORD item, flags;
@@ -1154,11 +1149,13 @@ long wxFrameMSW::MSWWindowProc(WXUINT message, WXWPARAM wParam, WXLPARAM lParam)
                 processed = HandleMenuSelect(item, flags, hmenu);
             }
             break;
+#endif
 
         case WM_PAINT:
             processed = HandlePaint();
             break;
 
+#ifndef __WXMICROWIN__
         case WM_QUERYDRAGICON:
             {
                 HICON hIcon = m_icon.Ok() ? GetHiconOf(m_icon)
@@ -1167,6 +1164,7 @@ long wxFrameMSW::MSWWindowProc(WXUINT message, WXWPARAM wParam, WXLPARAM lParam)
                 processed = rc != 0;
             }
             break;
+#endif
 
         case WM_SIZE:
             processed = HandleSize(LOWORD(lParam), HIWORD(lParam), wParam);