]> git.saurik.com Git - wxWidgets.git/blobdiff - src/msw/frame.cpp
scrolling to selection
[wxWidgets.git] / src / msw / frame.cpp
index 2885c3ed50b8c52ed5867653afe8f8511b61de74..4b7181dd0315374c2ede4af6422cb59d758d6444 100644 (file)
@@ -134,8 +134,8 @@ wxBEGIN_PROPERTIES_TABLE(wxFrame)
        wxEVENT_PROPERTY( Menu , wxEVT_COMMAND_MENU_SELECTED , wxCommandEvent)
 
     wxPROPERTY( Title,wxString, SetTitle, GetTitle, wxString() , 0 /*flags*/ , wxT("Helpstring") , wxT("group"))
-    wxPROPERTY_FLAGS( WindowStyle , wxFrameStyle , long , SetWindowStyleFlag , GetWindowStyleFlag , , 0 /*flags*/ , wxT("Helpstring") , wxT("group")) // style
-    wxPROPERTY( MenuBar , wxMenuBar * , SetMenuBar , GetMenuBar , , 0 /*flags*/ , wxT("Helpstring") , wxT("group"))
+    wxPROPERTY_FLAGS( WindowStyle , wxFrameStyle , long , SetWindowStyleFlag , GetWindowStyleFlag , EMPTY_MACROVALUE , 0 /*flags*/ , wxT("Helpstring") , wxT("group")) // style
+    wxPROPERTY( MenuBar , wxMenuBar * , SetMenuBar , GetMenuBar , EMPTY_MACROVALUE , 0 /*flags*/ , wxT("Helpstring") , wxT("group"))
 wxEND_PROPERTIES_TABLE()
 
 wxBEGIN_HANDLERS_TABLE(wxFrame)
@@ -194,8 +194,6 @@ bool wxFrame::Create(wxWindow *parent,
 
     SetBackgroundColour(wxSystemSettings::GetColour(wxSYS_COLOUR_APPWORKSPACE));
 
-    wxModelessWindows.Append(this);
-
     return TRUE;
 }
 
@@ -320,6 +318,32 @@ void wxFrame::PositionStatusBar()
 
 void wxFrame::AttachMenuBar(wxMenuBar *menubar)
 {
+#if defined(__WXWINCE__) && (_WIN32_WCE < 400 || defined(WIN32_PLATFORM_PSPC) || defined(WIN32_PLATFORM_WFSP))
+    if (!GetToolBar())
+    {
+        wxToolBar* toolBar = new wxToolBar(this, -1,
+                         wxDefaultPosition, wxDefaultSize,
+                         wxBORDER_NONE | wxTB_HORIZONTAL,
+                         wxToolBarNameStr, menubar);
+        SetToolBar(toolBar);
+        menubar->SetToolBar(toolBar);
+    }
+       // Now adjust size for menu bar
+       int menuHeight = 26;
+       
+       //When the main window is created using CW_USEDEFAULT the height of the
+       // is created is not taken into account). So we resize the window after
+       // if a menubar is present
+       {
+               RECT rc;
+               ::GetWindowRect((HWND) GetHWND(), &rc);
+               // adjust for menu / titlebar height
+               rc.bottom -= (2*menuHeight-1);
+               
+               MoveWindow((HWND) GetHWND(), rc.left, rc.top, rc.right, rc.bottom, FALSE);
+       }
+#endif
+
     wxFrameBase::AttachMenuBar(menubar);
 
     if ( !menubar )
@@ -330,7 +354,7 @@ void wxFrame::AttachMenuBar(wxMenuBar *menubar)
     }
     else // set new non NULL menu bar
     {
-#ifndef __WXWINCE__
+#if !defined(__WXWINCE__) || (_WIN32_WCE >= 400 && !defined(WIN32_PLATFORM_PSPC) && !defined(WIN32_PLATFORM_WFSP))
         // Can set a menubar several times.
         if ( menubar->GetHMenu() )
         {
@@ -353,18 +377,8 @@ void wxFrame::AttachMenuBar(wxMenuBar *menubar)
 
 void wxFrame::InternalSetMenuBar()
 {
-#ifdef __WXMICROWIN__
+#if defined(__WXMICROWIN__) || defined(__WXWINCE__)
     // Nothing
-#elif defined(__WXWINCE__)
-
-    if (!GetToolBar())
-    {
-        wxToolBar* toolBar = new wxToolBar(this, -1,
-                         wxDefaultPosition, wxDefaultSize,
-                         wxBORDER_NONE | wxTB_HORIZONTAL,
-                         wxToolBarNameStr, GetMenuBar());
-        SetToolBar(toolBar);
-    }
 #else
     if ( !::SetMenu(GetHwnd(), (HMENU)m_hMenu) )
     {
@@ -403,7 +417,7 @@ bool wxFrame::ShowFullScreen(bool show, long style)
     if (show)
     {
 #if wxUSE_TOOLBAR
-#ifdef __WXWINCE__
+#if defined(__WXWINCE__) && (_WIN32_WCE < 400 || defined(WIN32_PLATFORM_PSPC) || defined(WIN32_PLATFORM_WFSP))
         // TODO: hide commandbar
 #else
         wxToolBar *theToolBar = GetToolBar();
@@ -420,8 +434,10 @@ bool wxFrame::ShowFullScreen(bool show, long style)
 #endif // __WXWINCE__
 #endif // wxUSE_TOOLBAR
 
+#if defined(__WXMICROWIN__)
+#elif defined(__WXWINCE__)
         // TODO: make it work for WinCE
-#if !defined(__WXMICROWIN__) && !defined(__WXWINCE__)
+#else
         if (style & wxFULLSCREEN_NOMENUBAR)
             SetMenu((HWND)GetHWND(), (HMENU) NULL);
 #endif
@@ -446,7 +462,7 @@ bool wxFrame::ShowFullScreen(bool show, long style)
     else
     {
 #if wxUSE_TOOLBAR
-#ifdef __WXWINCE__
+#if defined(__WXWINCE__) && (_WIN32_WCE < 400 || defined(WIN32_PLATFORM_PSPC) || defined(WIN32_PLATFORM_WFSP))
         // TODO: show commandbar
 #else
         wxToolBar *theToolBar = GetToolBar();
@@ -472,8 +488,10 @@ bool wxFrame::ShowFullScreen(bool show, long style)
         }
 #endif // wxUSE_STATUSBAR
 
+#if defined(__WXMICROWIN__)
+#elif defined(__WXWINCE__)
         // TODO: make it work for WinCE
-#if !defined(__WXMICROWIN__) && !defined(__WXWINCE__)
+#else
         if ((m_fsStyle & wxFULLSCREEN_NOMENUBAR) && (m_hMenu != 0))
             SetMenu((HWND)GetHWND(), (HMENU)m_hMenu);
 #endif
@@ -490,7 +508,7 @@ bool wxFrame::ShowFullScreen(bool show, long style)
 
 wxToolBar* wxFrame::CreateToolBar(long style, wxWindowID id, const wxString& name)
 {
-#ifdef __WXWINCE__
+#if defined(__WXWINCE__) && (_WIN32_WCE < 400 || defined(WIN32_PLATFORM_PSPC) || defined(WIN32_PLATFORM_WFSP))
     // We may already have a toolbar from calling SetMenuBar.
     if (GetToolBar())
         return GetToolBar();
@@ -508,7 +526,7 @@ void wxFrame::PositionToolBar()
     wxToolBar *toolbar = GetToolBar();
     if ( toolbar && toolbar->IsShown() )
     {
-#ifdef __WXWINCE__
+#if defined(__WXWINCE__) && (_WIN32_WCE < 400 || defined(WIN32_PLATFORM_PSPC) || defined(WIN32_PLATFORM_WFSP))
         // We want to do something different in WinCE, because
         // the toolbar should be associated with the commandbar,
         // and not an independent window.
@@ -858,9 +876,9 @@ bool wxFrame::HandleMenuLoop(const wxEventType& evtType, WXWORD isPopup)
 // the window proc for wxFrame
 // ---------------------------------------------------------------------------
 
-long wxFrame::MSWWindowProc(WXUINT message, WXWPARAM wParam, WXLPARAM lParam)
+WXLRESULT wxFrame::MSWWindowProc(WXUINT message, WXWPARAM wParam, WXLPARAM lParam)
 {
-    long rc = 0;
+    WXLRESULT rc = 0;
     bool processed = FALSE;
 
     switch ( message )