]> git.saurik.com Git - wxWidgets.git/blobdiff - src/msw/frame.cpp
Implement wxChoice::Insert.
[wxWidgets.git] / src / msw / frame.cpp
index 395a6602e1768716c9bd4b9a16c2f102bbc665ca..c1904ead5c87911cf043a6e8a58226fbef9d6ae1 100644 (file)
 // headers
 // ----------------------------------------------------------------------------
 
-#if defined(__GNUG__) && !defined(NO_GCC_PRAGMA)
-    #pragma implementation "frame.h"
-#endif
-
 // For compilers that support precompilation, includes "wx.h".
 #include "wx/wxprec.h"
 
 #include <commctrl.h>
 #endif
 
+#if defined(__POCKETPC__) || defined(__SMARTPHONE__)
+    #include <ole2.h>
+    #include <aygshell.h>
+    #include "wx/msw/winundef.h"
+#endif
+
 #if wxUSE_STATUSBAR
     #include "wx/statusbr.h"
     #include "wx/generic/statusbr.h"
@@ -177,6 +179,14 @@ void wxFrame::Init()
     m_hwndToolTip = 0;
 #endif
 
+#if defined(__SMARTPHONE__) || defined(__POCKETPC__)
+    SHACTIVATEINFO* info = new SHACTIVATEINFO;
+    memset(info, 0, sizeof(SHACTIVATEINFO));
+    info->cbSize = sizeof(SHACTIVATEINFO);
+
+    m_activateInfo = (void*) info;
+#endif
+
     m_wasMinimized = false;
 }
 
@@ -193,10 +203,19 @@ bool wxFrame::Create(wxWindow *parent,
 
     SetOwnBackgroundColour(wxSystemSettings::GetColour(wxSYS_COLOUR_APPWORKSPACE));
 
-#if defined(__SMARTPHONE__) && defined(__WXWINCE__)
+#if defined(__SMARTPHONE__)
     SetLeftMenu(wxID_EXIT, _("Done"));
 #endif
 
+#if wxUSE_ACCEL && defined(__POCKETPC__)
+    // The guidelines state that Ctrl+Q should quit the app.
+    // Let's define an accelerator table to send wxID_EXIT.
+    wxAcceleratorEntry entries[1];
+    entries[0].Set(wxACCEL_CTRL,   'Q',         wxID_EXIT);
+    wxAcceleratorTable accel(1, entries);
+    SetAcceleratorTable(accel);
+#endif // wxUSE_ACCEL && __POCKETPC__
+
     return true;
 }
 
@@ -204,6 +223,12 @@ wxFrame::~wxFrame()
 {
     m_isBeingDeleted = true;
     DeleteAllBars();
+
+#if defined(__SMARTPHONE__) || defined(__POCKETPC__)
+    SHACTIVATEINFO* info = (SHACTIVATEINFO*) m_activateInfo;
+    delete info;
+    m_activateInfo = NULL;
+#endif
 }
 
 // ----------------------------------------------------------------------------
@@ -348,7 +373,7 @@ void wxFrame::AttachMenuBar(wxMenuBar *menubar)
 #elif defined(WINCE_WITHOUT_COMMANDBAR)
     if (!GetToolBar())
     {
-        wxToolBar* toolBar = new wxToolBar(this, wxID_ANY,
+        wxToolMenuBar* toolBar = new wxToolMenuBar(this, wxID_ANY,
                          wxDefaultPosition, wxDefaultSize,
                          wxBORDER_NONE | wxTB_HORIZONTAL,
                          wxToolBarNameStr, menubar);
@@ -663,7 +688,7 @@ void wxFrame::IconizeChildFrames(bool bIconize)
         wxFrame *frame = wxDynamicCast(win, wxFrame);
         if ( frame
 #if wxUSE_MDI_ARCHITECTURE
-                && !wxDynamicCast(frame, wxMDIChildFrame)
+                && !frame->IsMDIChild()
 #endif // wxUSE_MDI_ARCHITECTURE
            )
         {
@@ -923,6 +948,39 @@ WXLRESULT wxFrame::MSWWindowProc(WXUINT message, WXWPARAM wParam, WXLPARAM lPara
 
     switch ( message )
     {
+#if defined(__SMARTPHONE__) || defined(__POCKETPC__)
+        case WM_ACTIVATE:
+        {
+            SHACTIVATEINFO* info = (SHACTIVATEINFO*) m_activateInfo;
+            if (info)
+                SHHandleWMActivate(GetHwnd(), wParam, lParam, info, FALSE);
+            
+            // This implicitly sends a wxEVT_ACTIVATE_APP event
+            if (wxTheApp)
+                wxTheApp->SetActive(wParam != 0, FindFocus());
+            break;
+        }
+        case WM_SETTINGCHANGE:
+        {
+            SHACTIVATEINFO* info = (SHACTIVATEINFO*) m_activateInfo;
+            if (info)
+                SHHandleWMSettingChange(GetHwnd(), wParam, lParam, info);
+            processed = true;
+            break;
+        }
+        case WM_HIBERNATE:
+        {
+            wxActivateEvent event(wxEVT_HIBERNATE, true, wxID_ANY);
+            event.SetEventObject(wxTheApp);
+
+            if (wxTheApp)
+            {
+                processed = wxTheApp->ProcessEvent(event);
+            }
+            break;
+        }
+#endif
+
         case WM_CLOSE:
             // if we can't close, tell the system that we processed the
             // message - otherwise it would close us