1 ///////////////////////////////////////////////////////////////////////////// 2 // Name: wx/msw/frame.h 3 // Purpose: wxFrame class 4 // Author: Julian Smart 5 // Modified by: 6 // Created: 01/02/97 7 // RCS-ID: $Id: frame.h 45498 2007-04-16 13:03:05Z VZ $ 8 // Copyright: (c) Julian Smart 9 // Licence: wxWindows licence 10 ///////////////////////////////////////////////////////////////////////////// 11 12 #ifndef _WX_FRAME_H_ 13 #define _WX_FRAME_H_ 14 15 class WXDLLEXPORT wxFrame : public wxFrameBase 16 { 17 public: 18 // construction wxFrame()19 wxFrame() { Init(); } 20 wxFrame(wxWindow *parent, 21 wxWindowID id, 22 const wxString& title, 23 const wxPoint& pos = wxDefaultPosition, 24 const wxSize& size = wxDefaultSize, 25 long style = wxDEFAULT_FRAME_STYLE, 26 const wxString& name = wxFrameNameStr) 27 { 28 Init(); 29 30 Create(parent, id, title, pos, size, style, name); 31 } 32 33 bool Create(wxWindow *parent, 34 wxWindowID id, 35 const wxString& title, 36 const wxPoint& pos = wxDefaultPosition, 37 const wxSize& size = wxDefaultSize, 38 long style = wxDEFAULT_FRAME_STYLE, 39 const wxString& name = wxFrameNameStr); 40 41 virtual ~wxFrame(); 42 43 // implement base class pure virtuals 44 virtual bool ShowFullScreen(bool show, long style = wxFULLSCREEN_ALL); 45 virtual void Raise(); 46 47 // implementation only from now on 48 // ------------------------------- 49 50 // event handlers 51 void OnSysColourChanged(wxSysColourChangedEvent& event); 52 53 // Toolbar 54 #if wxUSE_TOOLBAR 55 virtual wxToolBar* CreateToolBar(long style = -1, 56 wxWindowID id = wxID_ANY, 57 const wxString& name = wxToolBarNameStr); 58 #endif // wxUSE_TOOLBAR 59 60 // Status bar 61 #if wxUSE_STATUSBAR 62 virtual wxStatusBar* OnCreateStatusBar(int number = 1, 63 long style = wxST_SIZEGRIP, 64 wxWindowID id = 0, 65 const wxString& name = wxStatusLineNameStr); 66 67 // Hint to tell framework which status bar to use: the default is to use 68 // native one for the platforms which support it (Win32), the generic one 69 // otherwise 70 71 // TODO: should this go into a wxFrameworkSettings class perhaps? UseNativeStatusBar(bool useNative)72 static void UseNativeStatusBar(bool useNative) 73 { m_useNativeStatusBar = useNative; } UsesNativeStatusBar()74 static bool UsesNativeStatusBar() 75 { return m_useNativeStatusBar; } 76 #endif // wxUSE_STATUSBAR 77 78 #if wxUSE_MENUS GetWinMenu()79 WXHMENU GetWinMenu() const { return m_hMenu; } 80 #endif // wxUSE_MENUS 81 82 // event handlers 83 bool HandlePaint(); 84 bool HandleSize(int x, int y, WXUINT flag); 85 bool HandleCommand(WXWORD id, WXWORD cmd, WXHWND control); 86 bool HandleMenuSelect(WXWORD nItem, WXWORD nFlags, WXHMENU hMenu); 87 bool HandleMenuLoop(const wxEventType& evtType, WXWORD isPopup); 88 89 // tooltip management 90 #if wxUSE_TOOLTIPS GetToolTipCtrl()91 WXHWND GetToolTipCtrl() const { return m_hwndToolTip; } SetToolTipCtrl(WXHWND hwndTT)92 void SetToolTipCtrl(WXHWND hwndTT) { m_hwndToolTip = hwndTT; } 93 #endif // tooltips 94 95 // a MSW only function which sends a size event to the window using its 96 // current size - this has an effect of refreshing the window layout 97 virtual void SendSizeEvent(); 98 99 virtual wxPoint GetClientAreaOrigin() const; 100 101 // override base class version to add menu bar accel processing MSWTranslateMessage(WXMSG * msg)102 virtual bool MSWTranslateMessage(WXMSG *msg) 103 { 104 return MSWDoTranslateMessage(this, msg); 105 } 106 107 // window proc for the frames 108 virtual WXLRESULT MSWWindowProc(WXUINT message, 109 WXWPARAM wParam, 110 WXLPARAM lParam); 111 112 protected: 113 // common part of all ctors 114 void Init(); 115 116 // override base class virtuals 117 virtual void DoGetClientSize(int *width, int *height) const; 118 virtual void DoSetClientSize(int width, int height); 119 120 #if wxUSE_MENUS_NATIVE 121 // perform MSW-specific action when menubar is changed 122 virtual void AttachMenuBar(wxMenuBar *menubar); 123 124 // a plug in for MDI frame classes which need to do something special when 125 // the menubar is set 126 virtual void InternalSetMenuBar(); 127 #endif // wxUSE_MENUS_NATIVE 128 129 // propagate our state change to all child frames 130 void IconizeChildFrames(bool bIconize); 131 132 // the real implementation of MSWTranslateMessage(), also used by 133 // wxMDIChildFrame 134 bool MSWDoTranslateMessage(wxFrame *frame, WXMSG *msg); 135 136 // handle WM_INITMENUPOPUP message to generate wxEVT_MENU_OPEN 137 bool HandleInitMenuPopup(WXHMENU hMenu); 138 IsMDIChild()139 virtual bool IsMDIChild() const { return false; } 140 141 // get default (wxWidgets) icon for the frame 142 virtual WXHICON GetDefaultIcon() const; 143 144 #if wxUSE_TOOLBAR 145 virtual void PositionToolBar(); 146 #endif // wxUSE_TOOLBAR 147 148 #if wxUSE_STATUSBAR 149 virtual void PositionStatusBar(); 150 151 static bool m_useNativeStatusBar; 152 #endif // wxUSE_STATUSBAR 153 154 #if wxUSE_MENUS 155 // frame menu, NULL if none 156 WXHMENU m_hMenu; 157 #endif // wxUSE_MENUS 158 159 private: 160 #if wxUSE_TOOLTIPS 161 WXHWND m_hwndToolTip; 162 #endif // tooltips 163 164 // used by IconizeChildFrames(), see comments there 165 bool m_wasMinimized; 166 167 DECLARE_EVENT_TABLE() 168 DECLARE_DYNAMIC_CLASS_NO_COPY(wxFrame) 169 }; 170 171 #endif 172 // _WX_FRAME_H_ 173