]> git.saurik.com Git - wxWidgets.git/blame - include/wx/msw/frame.h
Native wxControl::DoGetBestSize() implementation
[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
JS
8// Copyright: (c) Julian Smart
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,
3a19e16d
VZ
60 wxWindowID id = -1,
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
42e69d6b 86 WXHMENU GetWinMenu() const { return m_hMenu; }
16f6dfd8 87
7c0ea335 88 // event handlers
42e69d6b
VZ
89 bool HandlePaint();
90 bool HandleSize(int x, int y, WXUINT flag);
91 bool HandleCommand(WXWORD id, WXWORD cmd, WXHWND control);
92 bool HandleMenuSelect(WXWORD nItem, WXWORD nFlags, WXHMENU hMenu);
ccef86c7 93 bool HandleMenuLoop(const wxEventType& evtType, WXWORD isPopup);
42e69d6b 94
7c0ea335 95 // tooltip management
3a19e16d 96#if wxUSE_TOOLTIPS
a23fd0e1
VZ
97 WXHWND GetToolTipCtrl() const { return m_hwndToolTip; }
98 void SetToolTipCtrl(WXHWND hwndTT) { m_hwndToolTip = hwndTT; }
3a19e16d
VZ
99#endif // tooltips
100
3cfcd50b
GT
101 // a MSW only function which sends a size event to the window using its
102 // current size - this has an effect of refreshing the window layout
a4f25aef 103 virtual void SendSizeEvent();
3cfcd50b 104
2bda0e17 105protected:
7c0ea335
VZ
106 // common part of all ctors
107 void Init();
108
a23fd0e1
VZ
109 // override base class virtuals
110 virtual void DoGetClientSize(int *width, int *height) const;
a23fd0e1 111 virtual void DoSetClientSize(int width, int height);
cc2b7472 112
1e6feb95 113#if wxUSE_MENUS_NATIVE
6522713c
VZ
114 // perform MSW-specific action when menubar is changed
115 virtual void AttachMenuBar(wxMenuBar *menubar);
116
42e69d6b
VZ
117 // a plug in for MDI frame classes which need to do something special when
118 // the menubar is set
119 virtual void InternalSetMenuBar();
1e6feb95 120#endif // wxUSE_MENUS_NATIVE
42e69d6b 121
3a19e16d
VZ
122 // propagate our state change to all child frames
123 void IconizeChildFrames(bool bIconize);
16f6dfd8 124
42e69d6b
VZ
125 // we add menu bar accel processing
126 bool MSWTranslateMessage(WXMSG* pMsg);
127
a23fd0e1 128 // window proc for the frames
c140b7e7 129 WXLRESULT MSWWindowProc(WXUINT message, WXWPARAM wParam, WXLPARAM lParam);
bf505d28 130
92f1a59c
JS
131 // handle WM_INITMENUPOPUP message
132 bool HandleInitMenuPopup(WXHMENU hMenu);
e39af974 133
91dd52fe 134 virtual bool IsMDIChild() const { return FALSE; }
a23fd0e1 135
82c9f85c
VZ
136 // get default (wxWindows) icon for the frame
137 virtual WXHICON GetDefaultIcon() const;
d427503c
VZ
138
139#if wxUSE_STATUSBAR
3a19e16d 140 static bool m_useNativeStatusBar;
d427503c
VZ
141#endif // wxUSE_STATUSBAR
142
a2327a9f 143 // Data to save/restore when calling ShowFullScreen
a2327a9f
JS
144 int m_fsStatusBarFields; // 0 for no status bar
145 int m_fsStatusBarHeight;
146 int m_fsToolBarHeight;
a2327a9f 147
a23fd0e1 148private:
3a19e16d
VZ
149#if wxUSE_TOOLTIPS
150 WXHWND m_hwndToolTip;
151#endif // tooltips
152
9327c3aa
VZ
153 // used by IconizeChildFrames(), see comments there
154 bool m_wasMinimized;
155
3a19e16d 156 DECLARE_EVENT_TABLE()
fc7a2a60 157 DECLARE_DYNAMIC_CLASS_NO_COPY(wxFrame)
2bda0e17
KB
158};
159
160#endif
bbcdf8bc 161 // _WX_FRAME_H_