File: frame.h

package info (click to toggle)
wxwidgets3.0 3.0.5.1%2Bdfsg-2
  • links: PTS, VCS
  • area: main
  • in suites: bullseye
  • size: 120,464 kB
  • sloc: cpp: 896,633; makefile: 52,303; ansic: 21,971; sh: 5,713; python: 2,940; xml: 1,534; perl: 264; javascript: 33
file content (221 lines) | stat: -rw-r--r-- 7,737 bytes parent folder | download | duplicates (7)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
/////////////////////////////////////////////////////////////////////////////
// Name:        wx/os2/frame.h
// Purpose:     wxFrame class
// Author:      David Webster
// Modified by:
// Created:     10/27/99
// Copyright:   (c) David Webster
// Licence:     wxWindows licence
/////////////////////////////////////////////////////////////////////////////

#ifndef _WX_FRAME_H_
#define _WX_FRAME_H_

//
// Get the default resource ID's for frames
//
#include "wx/os2/wxrsc.h"

class WXDLLIMPEXP_CORE wxFrame : public wxFrameBase
{
public:
    // construction
    wxFrame() { Init(); }
    wxFrame( wxWindow*       pParent
               ,wxWindowID      vId
               ,const wxString& rsTitle
               ,const wxPoint&  rPos = wxDefaultPosition
               ,const wxSize&   rSize = wxDefaultSize
               ,long            lStyle = wxDEFAULT_FRAME_STYLE
               ,const wxString& rsName = wxFrameNameStr
              )
    {
        Init();

        Create(pParent, vId, rsTitle, rPos, rSize, lStyle, rsName);
    }

    bool Create( wxWindow*       pParent
                ,wxWindowID      vId
                ,const wxString& rsTitle
                ,const wxPoint&  rPos = wxDefaultPosition
                ,const wxSize&   rSize = wxDefaultSize
                ,long            lStyle = wxDEFAULT_FRAME_STYLE
                ,const wxString& rsName = wxFrameNameStr
               );

    virtual ~wxFrame();

    // implement base class pure virtuals
#if wxUSE_MENUS_NATIVE
    virtual void SetMenuBar(wxMenuBar* pMenubar);
#endif
    virtual bool ShowFullScreen( bool bShow
                                ,long lStyle = wxFULLSCREEN_ALL
                               );


    // implementation only from now on
    // -------------------------------

    virtual void Raise(void);

    // event handlers
    void OnSysColourChanged(wxSysColourChangedEvent& rEvent);

    // Toolbar
#if wxUSE_TOOLBAR
    virtual wxToolBar* CreateToolBar( long            lStyle = -1
                                     ,wxWindowID      vId = -1
                                     ,const wxString& rsName = wxToolBarNameStr
                                    );

    virtual wxToolBar* OnCreateToolBar( long            lStyle
                                       ,wxWindowID      vId
                                       ,const wxString& rsName
                                      );
    virtual void       PositionToolBar(void);
#endif // wxUSE_TOOLBAR

    // Status bar
#if wxUSE_STATUSBAR
    virtual wxStatusBar* OnCreateStatusBar( int             nNumber = 1
                                           ,long            lStyle = wxSTB_DEFAULT_STYLE
                                           ,wxWindowID      vId = 0
                                           ,const wxString& rsName = wxStatusLineNameStr
                                          );
    virtual void PositionStatusBar(void);

    // Hint to tell framework which status bar to use: the default is to use
    // native one for the platforms which support it (Win32), the generic one
    // otherwise

    // TODO: should this go into a wxFrameworkSettings class perhaps?
    static void UseNativeStatusBar(bool bUseNative)
        { m_bUseNativeStatusBar = bUseNative; }
    static bool UsesNativeStatusBar()
        { return m_bUseNativeStatusBar; }
#endif // wxUSE_STATUSBAR

    WXHMENU GetWinMenu() const { return m_hMenu; }

    // Returns the origin of client area (may be different from (0,0) if the
    // frame has a toolbar)
    virtual wxPoint GetClientAreaOrigin() const;

    // event handlers
    bool HandlePaint(void);
    bool HandleSize( int    nX
                    ,int    nY
                    ,WXUINT uFlag
                   );
    bool HandleCommand( WXWORD wId
                       ,WXWORD wCmd
                       ,WXHWND wControl
                      );
    bool HandleMenuSelect( WXWORD  wItem
                          ,WXWORD  wFlags
                          ,WXHMENU hMenu
                         );

    // tooltip management
#if wxUSE_TOOLTIPS
    WXHWND GetToolTipCtrl(void) const { return m_hWndToolTip; }
    void   SetToolTipCtrl(WXHWND hHwndTT) { m_hWndToolTip = hHwndTT; }
#endif // tooltips

    void      SetClient(WXHWND    c_Hwnd);
    void      SetClient(wxWindow* c_Window);
    wxWindow *GetClient();

 friend MRESULT EXPENTRY wxFrameWndProc(HWND  hWnd,ULONG ulMsg, MPARAM wParam, MPARAM lParam);
 friend MRESULT EXPENTRY wxFrameMainWndProc(HWND  hWnd,ULONG ulMsg, MPARAM wParam, MPARAM lParam);

protected:
    // common part of all ctors
    void         Init(void);

    virtual WXHICON GetDefaultIcon(void) const;
    // override base class virtuals
    virtual void DoGetClientSize( int* pWidth
                                 ,int* pHeight
                                ) const;
    virtual void DoSetClientSize( int nWidth
                                 ,int nWeight
                                );
    inline virtual bool IsMDIChild(void) const { return FALSE; }

#if wxUSE_MENUS_NATIVE
    // helper
    void         DetachMenuBar(void);
    // perform MSW-specific action when menubar is changed
    virtual void AttachMenuBar(wxMenuBar* pMenubar);
    // a plug in for MDI frame classes which need to do something special when
    // the menubar is set
    virtual void InternalSetMenuBar(void);
#endif
    // propagate our state change to all child frames
    void IconizeChildFrames(bool bIconize);

    // we add menu bar accel processing
    bool OS2TranslateMessage(WXMSG* pMsg);

    // window proc for the frames
    MRESULT OS2WindowProc( WXUINT   uMessage
                          ,WXWPARAM wParam
                          ,WXLPARAM lParam
                         );

    bool                            m_bIconized;
    WXHICON                         m_hDefaultIcon;

#if wxUSE_STATUSBAR
    static bool                     m_bUseNativeStatusBar;
#endif // wxUSE_STATUSBAR

    // Data to save/restore when calling ShowFullScreen
    long                            m_lFsStyle;           // Passed to ShowFullScreen
    wxRect                          m_vFsOldSize;
    long                            m_lFsOldWindowStyle;
    int                             m_nFsStatusBarFields; // 0 for no status bar
    int                             m_nFsStatusBarHeight;
    int                             m_nFsToolBarHeight;
    bool                            m_bFsIsMaximized;
    bool                            m_bFsIsShowing;
    bool                            m_bWasMinimized;
    bool                            m_bIsShown;

private:
#if wxUSE_TOOLTIPS
    WXHWND                          m_hWndToolTip;
#endif // tooltips

    //
    // Handles to child windows of the Frame, and the frame itself,
    // that we don't have child objects for (m_hWnd in wxWindow is the
    // handle of the Frame's client window!
    //
    WXHWND                          m_hTitleBar;
    WXHWND                          m_hHScroll;
    WXHWND                          m_hVScroll;

    //
    // Swp structures for various client data
    // DW: Better off in attached RefData?
    //
    SWP                             m_vSwpTitleBar;
    SWP                             m_vSwpMenuBar;
    SWP                             m_vSwpHScroll;
    SWP                             m_vSwpVScroll;
    SWP                             m_vSwpStatusBar;
    SWP                             m_vSwpToolBar;

    DECLARE_EVENT_TABLE()
    DECLARE_DYNAMIC_CLASS(wxFrame)
};

MRESULT EXPENTRY wxFrameWndProc(HWND  hWnd,ULONG ulMsg, MPARAM wParam, MPARAM lParam);
MRESULT EXPENTRY wxFrameMainWndProc(HWND  hWnd,ULONG ulMsg, MPARAM wParam, MPARAM lParam);
#endif
    // _WX_FRAME_H_