]> git.saurik.com Git - wxWidgets.git/blobdiff - src/msw/frame.cpp
Compilaton fixes.
[wxWidgets.git] / src / msw / frame.cpp
index 89e9716b0b692443529b4428e94b4ab0124986ed..f17d23dddb1b9738a201e50e15465a24df9268c2 100644 (file)
@@ -106,9 +106,6 @@ void wxFrame::Init()
 #if wxUSE_TOOLTIPS
     m_hwndToolTip = 0;
 #endif
-#ifdef __WXWINCE__
-    m_commandBar = 0;
-#endif
 
     // Data to save/restore when calling ShowFullScreen
     m_fsStatusBarFields = 0;
@@ -140,14 +137,6 @@ wxFrame::~wxFrame()
 {
     m_isBeingDeleted = TRUE;
     DeleteAllBars();
-#ifdef __WXWINCE__
-    if (m_commandBar)
-    {
-        ::DestroyWindow((HWND) m_commandBar);
-        m_commandBar = NULL;
-    }
-#endif
-
 }
 
 // ----------------------------------------------------------------------------
@@ -275,6 +264,7 @@ void wxFrame::AttachMenuBar(wxMenuBar *menubar)
     }
     else // set new non NULL menu bar
     {
+#ifndef __WXWINCE__
         // Can set a menubar several times.
         if ( menubar->GetHMenu() )
         {
@@ -290,7 +280,7 @@ void wxFrame::AttachMenuBar(wxMenuBar *menubar)
                 return;
             }
         }
-
+#endif
         InternalSetMenuBar();
     }
 }
@@ -300,25 +290,14 @@ void wxFrame::InternalSetMenuBar()
 #ifdef __WXMICROWIN__
     // Nothing
 #elif defined(__WXWINCE__)
-    if (!m_commandBar)
-    {
-        // TODO: eventually have a wxCommandBar class
-        m_commandBar = (WXHWND) CommandBar_Create(wxGetInstance(), GetHwnd(), NewControlId());
-        if (!m_commandBar)
-        {
-            wxFAIL_MSG( _T("failed to create commandbar") );
-            return;
-        }
-    }
-    if (m_commandBar)
+
+    if (!GetToolBar())
     {
-        if (!CommandBar_InsertMenubarEx((HWND) m_commandBar, NULL,
-            (LPTSTR) (HMENU) m_hMenu, 0))
-        {
-            wxFAIL_MSG( _T("failed to set menubar") );
-            return;
-        }
-        CommandBar_DrawMenuBar((HWND) m_commandBar, 0);
+        wxToolBar* toolBar = new wxToolBar(this, -1,
+                         wxDefaultPosition, wxDefaultSize,
+                         wxBORDER_NONE | wxTB_HORIZONTAL,
+                         wxToolBarNameStr, GetMenuBar());
+        SetToolBar(toolBar);
     }
 #else
     if ( !::SetMenu(GetHwnd(), (HMENU)m_hMenu) )
@@ -445,6 +424,11 @@ bool wxFrame::ShowFullScreen(bool show, long style)
 
 wxToolBar* wxFrame::CreateToolBar(long style, wxWindowID id, const wxString& name)
 {
+#ifdef __WXWINCE__
+    // We may already have a toolbar from calling SetMenuBar.
+    if (GetToolBar())
+        return GetToolBar();
+#endif
     if ( wxFrameBase::CreateToolBar(style, id, name) )
     {
         PositionToolBar();
@@ -802,6 +786,10 @@ long wxFrame::MSWWindowProc(WXUINT message, WXWPARAM wParam, WXLPARAM lParam)
             processed = HandlePaint();
             break;
 
+        case WM_INITMENUPOPUP:
+            processed = HandleInitMenuPopup((WXHMENU) wParam);
+            break;
+
 #if !defined(__WXMICROWIN__) && !defined(__WXWINCE__)
         case WM_MENUSELECT:
             {
@@ -813,10 +801,6 @@ long wxFrame::MSWWindowProc(WXUINT message, WXWPARAM wParam, WXLPARAM lParam)
             }
             break;
 
-        case WM_INITMENU:
-            processed = HandleInitMenu();
-            break;
-
         case WM_EXITMENULOOP:
             processed = HandleMenuLoop(wxEVT_MENU_CLOSE, wParam);
             break;
@@ -839,13 +823,25 @@ long wxFrame::MSWWindowProc(WXUINT message, WXWPARAM wParam, WXLPARAM lParam)
     return rc;
 }
 
-// handle WM_INITMENU message
-bool wxFrame::HandleInitMenu()
+// handle WM_INITMENUPOPUP message
+bool wxFrame::HandleInitMenuPopup(WXHMENU hMenu)
 {
-    wxMenuEvent event(wxEVT_MENU_OPEN, 0);
+    wxMenu* menu = NULL;
+    if (GetMenuBar())
+    {
+        int nCount = GetMenuBar()->GetMenuCount();
+        for (int n = 0; n < nCount; n++)
+        {
+            if (GetMenuBar()->GetMenu(n)->GetHMenu() == hMenu)
+            {
+                menu = GetMenuBar()->GetMenu(n);
+                break;
+            }
+        }
+    }
+    
+    wxMenuEvent event(wxEVT_MENU_OPEN, 0, menu);
     event.SetEventObject(this);
 
     return GetEventHandler()->ProcessEvent(event);
 }
-
-