X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/ffca575c83935a6382d2d471c4692928d26ac5fe..a9fc5eec8b1facb001552e61e28c88a22034f199:/src/msw/frame.cpp diff --git a/src/msw/frame.cpp b/src/msw/frame.cpp index 64e7a9d85e..4b7181dd03 100644 --- a/src/msw/frame.cpp +++ b/src/msw/frame.cpp @@ -82,66 +82,66 @@ END_EVENT_TABLE() #if wxUSE_EXTENDED_RTTI WX_DEFINE_FLAGS( wxFrameStyle ) -WX_BEGIN_FLAGS( wxFrameStyle ) +wxBEGIN_FLAGS( wxFrameStyle ) // new style border flags, we put them first to // use them for streaming out - WX_FLAGS_MEMBER(wxBORDER_SIMPLE) - WX_FLAGS_MEMBER(wxBORDER_SUNKEN) - WX_FLAGS_MEMBER(wxBORDER_DOUBLE) - WX_FLAGS_MEMBER(wxBORDER_RAISED) - WX_FLAGS_MEMBER(wxBORDER_STATIC) - WX_FLAGS_MEMBER(wxBORDER_NONE) + wxFLAGS_MEMBER(wxBORDER_SIMPLE) + wxFLAGS_MEMBER(wxBORDER_SUNKEN) + wxFLAGS_MEMBER(wxBORDER_DOUBLE) + wxFLAGS_MEMBER(wxBORDER_RAISED) + wxFLAGS_MEMBER(wxBORDER_STATIC) + wxFLAGS_MEMBER(wxBORDER_NONE) // old style border flags - WX_FLAGS_MEMBER(wxSIMPLE_BORDER) - WX_FLAGS_MEMBER(wxSUNKEN_BORDER) - WX_FLAGS_MEMBER(wxDOUBLE_BORDER) - WX_FLAGS_MEMBER(wxRAISED_BORDER) - WX_FLAGS_MEMBER(wxSTATIC_BORDER) - WX_FLAGS_MEMBER(wxNO_BORDER) + wxFLAGS_MEMBER(wxSIMPLE_BORDER) + wxFLAGS_MEMBER(wxSUNKEN_BORDER) + wxFLAGS_MEMBER(wxDOUBLE_BORDER) + wxFLAGS_MEMBER(wxRAISED_BORDER) + wxFLAGS_MEMBER(wxSTATIC_BORDER) + wxFLAGS_MEMBER(wxBORDER) // standard window styles - WX_FLAGS_MEMBER(wxTAB_TRAVERSAL) - WX_FLAGS_MEMBER(wxCLIP_CHILDREN) - WX_FLAGS_MEMBER(wxTRANSPARENT_WINDOW) - WX_FLAGS_MEMBER(wxWANTS_CHARS) - WX_FLAGS_MEMBER(wxNO_FULL_REPAINT_ON_RESIZE) - WX_FLAGS_MEMBER(wxALWAYS_SHOW_SB ) - WX_FLAGS_MEMBER(wxVSCROLL) - WX_FLAGS_MEMBER(wxHSCROLL) + wxFLAGS_MEMBER(wxTAB_TRAVERSAL) + wxFLAGS_MEMBER(wxCLIP_CHILDREN) + wxFLAGS_MEMBER(wxTRANSPARENT_WINDOW) + wxFLAGS_MEMBER(wxWANTS_CHARS) + wxFLAGS_MEMBER(wxFULL_REPAINT_ON_RESIZE) + wxFLAGS_MEMBER(wxALWAYS_SHOW_SB ) + wxFLAGS_MEMBER(wxVSCROLL) + wxFLAGS_MEMBER(wxHSCROLL) // frame styles - WX_FLAGS_MEMBER(wxSTAY_ON_TOP) - WX_FLAGS_MEMBER(wxCAPTION) - WX_FLAGS_MEMBER(wxTHICK_FRAME) - WX_FLAGS_MEMBER(wxSYSTEM_MENU) - WX_FLAGS_MEMBER(wxRESIZE_BORDER) - WX_FLAGS_MEMBER(wxRESIZE_BOX) - WX_FLAGS_MEMBER(wxCLOSE_BOX) - WX_FLAGS_MEMBER(wxMAXIMIZE_BOX) - WX_FLAGS_MEMBER(wxMINIMIZE_BOX) + wxFLAGS_MEMBER(wxSTAY_ON_TOP) + wxFLAGS_MEMBER(wxCAPTION) + wxFLAGS_MEMBER(wxTHICK_FRAME) + wxFLAGS_MEMBER(wxSYSTEM_MENU) + wxFLAGS_MEMBER(wxRESIZE_BORDER) + wxFLAGS_MEMBER(wxRESIZE_BOX) + wxFLAGS_MEMBER(wxCLOSE_BOX) + wxFLAGS_MEMBER(wxMAXIMIZE_BOX) + wxFLAGS_MEMBER(wxMINIMIZE_BOX) - WX_FLAGS_MEMBER(wxFRAME_TOOL_WINDOW) - WX_FLAGS_MEMBER(wxFRAME_FLOAT_ON_PARENT) + wxFLAGS_MEMBER(wxFRAME_TOOL_WINDOW) + wxFLAGS_MEMBER(wxFRAME_FLOAT_ON_PARENT) - WX_FLAGS_MEMBER(wxFRAME_SHAPED) + wxFLAGS_MEMBER(wxFRAME_SHAPED) -WX_END_FLAGS( wxFrameStyle ) +wxEND_FLAGS( wxFrameStyle ) IMPLEMENT_DYNAMIC_CLASS_XTI(wxFrame, wxTopLevelWindow,"wx/frame.h") -WX_BEGIN_PROPERTIES_TABLE(wxFrame) - WX_EVENT_PROPERTY( Menu , wxEVT_COMMAND_MENU_SELECTED , wxCommandEvent) +wxBEGIN_PROPERTIES_TABLE(wxFrame) + wxEVENT_PROPERTY( Menu , wxEVT_COMMAND_MENU_SELECTED , wxCommandEvent) - WX_PROPERTY( Title,wxString, SetTitle, GetTitle, wxString() , 0 /*flags*/ , wxT("Helpstring") , wxT("group")) - WX_PROPERTY_FLAGS( WindowStyle , wxFrameStyle , long , SetWindowStyleFlag , GetWindowStyleFlag , , 0 /*flags*/ , wxT("Helpstring") , wxT("group")) // style - WX_PROPERTY( MenuBar , wxMenuBar * , SetMenuBar , GetMenuBar , , 0 /*flags*/ , wxT("Helpstring") , wxT("group")) -WX_END_PROPERTIES_TABLE() + wxPROPERTY( Title,wxString, SetTitle, GetTitle, wxString() , 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() -WX_BEGIN_HANDLERS_TABLE(wxFrame) -WX_END_HANDLERS_TABLE() +wxBEGIN_HANDLERS_TABLE(wxFrame) +wxEND_HANDLERS_TABLE() -WX_CONSTRUCTOR_6( wxFrame , wxWindow* , Parent , wxWindowID , Id , wxString , Title , wxPoint , Position , wxSize , Size , long , WindowStyle) +wxCONSTRUCTOR_6( wxFrame , wxWindow* , Parent , wxWindowID , Id , wxString , Title , wxPoint , Position , wxSize , Size , long , WindowStyle) #else IMPLEMENT_DYNAMIC_CLASS(wxFrame, wxTopLevelWindow) @@ -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. @@ -630,14 +648,12 @@ void wxFrame::IconizeChildFrames(bool bIconize) // restoring it if ( bIconize ) { - // note that we shouldn't touch the hidden frames neither - // because iconizing/restoring them would show them as a side - // effect - frame->m_wasMinimized = frame->IsIconized() || !frame->IsShown(); + frame->m_wasMinimized = frame->IsIconized(); } - // this test works for both iconizing and restoring - if ( !frame->m_wasMinimized ) + // note that we shouldn't touch the hidden frames neither because + // iconizing/restoring them would show them as a side effect + if ( !frame->m_wasMinimized && frame->IsShown() ) frame->Iconize(bIconize); } } @@ -860,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 )