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