1/////////////////////////////////////////////////////////////////////////////// 2// Name: wx/msw/toplevel.h 3// Purpose: wxTopLevelWindowMSW is the MSW implementation of wxTLW 4// Author: Vadim Zeitlin 5// Modified by: 6// Created: 20.09.01 7// RCS-ID: $Id: toplevel.h 50999 2008-01-03 01:13:44Z VZ $ 8// Copyright: (c) 2001 SciTech Software, Inc. (www.scitechsoft.com) 9// Licence: wxWindows licence 10/////////////////////////////////////////////////////////////////////////////// 11 12#ifndef _WX_MSW_TOPLEVEL_H_ 13#define _WX_MSW_TOPLEVEL_H_ 14 15// ---------------------------------------------------------------------------- 16// wxTopLevelWindowMSW 17// ---------------------------------------------------------------------------- 18 19class WXDLLEXPORT wxTopLevelWindowMSW : public wxTopLevelWindowBase 20{ 21public: 22 // constructors and such 23 wxTopLevelWindowMSW() { Init(); } 24 25 wxTopLevelWindowMSW(wxWindow *parent, 26 wxWindowID id, 27 const wxString& title, 28 const wxPoint& pos = wxDefaultPosition, 29 const wxSize& size = wxDefaultSize, 30 long style = wxDEFAULT_FRAME_STYLE, 31 const wxString& name = wxFrameNameStr) 32 { 33 Init(); 34 35 (void)Create(parent, id, title, pos, size, style, name); 36 } 37 38 bool Create(wxWindow *parent, 39 wxWindowID id, 40 const wxString& title, 41 const wxPoint& pos = wxDefaultPosition, 42 const wxSize& size = wxDefaultSize, 43 long style = wxDEFAULT_FRAME_STYLE, 44 const wxString& name = wxFrameNameStr); 45 46 virtual ~wxTopLevelWindowMSW(); 47 48 // implement base class pure virtuals 49 virtual void SetTitle( const wxString& title); 50 virtual wxString GetTitle() const; 51 virtual void Maximize(bool maximize = true); 52 virtual bool IsMaximized() const; 53 virtual void Iconize(bool iconize = true); 54 virtual bool IsIconized() const; 55 virtual void SetIcon(const wxIcon& icon); 56 virtual void SetIcons(const wxIconBundle& icons ); 57 virtual void Restore(); 58 59 virtual void SetLayoutDirection(wxLayoutDirection dir); 60 61#ifndef __WXWINCE__ 62 virtual bool SetShape(const wxRegion& region); 63#endif // __WXWINCE__ 64 virtual void RequestUserAttention(int flags = wxUSER_ATTENTION_INFO); 65 66 virtual bool Show(bool show = true); 67 68 virtual bool ShowFullScreen(bool show, long style = wxFULLSCREEN_ALL); 69 virtual bool IsFullScreen() const { return m_fsIsShowing; } 70 71 // wxMSW only: EnableCloseButton(false) may be used to remove the "Close" 72 // button from the title bar 73 virtual bool EnableCloseButton(bool enable = true); 74 75 // Set window transparency if the platform supports it 76 virtual bool SetTransparent(wxByte alpha); 77 virtual bool CanSetTransparent(); 78 79 80 // implementation from now on 81 // -------------------------- 82 83 // event handlers 84 void OnActivate(wxActivateEvent& event); 85 86 // called by wxWindow whenever it gets focus 87 void SetLastFocus(wxWindow *win) { m_winLastFocused = win; } 88 wxWindow *GetLastFocus() const { return m_winLastFocused; } 89 90#if defined(__SMARTPHONE__) && defined(__WXWINCE__) 91 virtual void SetLeftMenu(int id = wxID_ANY, const wxString& label = wxEmptyString, wxMenu *subMenu = NULL); 92 virtual void SetRightMenu(int id = wxID_ANY, const wxString& label = wxEmptyString, wxMenu *subMenu = NULL); 93 bool HandleCommand(WXWORD id, WXWORD cmd, WXHWND control); 94 virtual bool MSWShouldPreProcessMessage(WXMSG* pMsg); 95#endif // __SMARTPHONE__ && __WXWINCE__ 96 97#if defined(__SMARTPHONE__) || defined(__POCKETPC__) 98 // Soft Input Panel (SIP) change notification 99 virtual bool HandleSettingChange(WXWPARAM wParam, WXLPARAM lParam); 100#endif 101 102 // translate wxWidgets flags to Windows ones 103 virtual WXDWORD MSWGetStyle(long flags, WXDWORD *exstyle) const; 104 105 // choose the right parent to use with CreateWindow() 106 virtual WXHWND MSWGetParent() const; 107 108 // window proc for the frames 109 WXLRESULT MSWWindowProc(WXUINT message, WXWPARAM wParam, WXLPARAM lParam); 110 111protected: 112 // common part of all ctors 113 void Init(); 114 115 // create a new frame, return false if it couldn't be created 116 bool CreateFrame(const wxString& title, 117 const wxPoint& pos, 118 const wxSize& size); 119 120 // create a new dialog using the given dialog template from resources, 121 // return false if it couldn't be created 122 bool CreateDialog(const void *dlgTemplate, 123 const wxString& title, 124 const wxPoint& pos, 125 const wxSize& size); 126 127 // common part of Iconize(), Maximize() and Restore() 128 void DoShowWindow(int nShowCmd); 129 130 // is the window currently iconized? 131 bool m_iconized; 132 133 // should the frame be maximized when it will be shown? set by Maximize() 134 // when it is called while the frame is hidden 135 bool m_maximizeOnShow; 136 137 // Data to save/restore when calling ShowFullScreen 138 long m_fsStyle; // Passed to ShowFullScreen 139 wxRect m_fsOldSize; 140 long m_fsOldWindowStyle; 141 bool m_fsIsMaximized; 142 bool m_fsIsShowing; 143 144 // the last focused child: we restore focus to it on activation 145 wxWindow *m_winLastFocused; 146 147#if defined(__SMARTPHONE__) && defined(__WXWINCE__) 148 class ButtonMenu 149 { 150 public: 151 ButtonMenu(); 152 ~ButtonMenu(); 153 154 void SetButton(int id = wxID_ANY, 155 const wxString& label = wxEmptyString, 156 wxMenu *subMenu = NULL); 157 158 bool IsAssigned() const {return m_assigned;} 159 bool IsMenu() const {return m_menu!=NULL;} 160 161 int GetId() const {return m_id;} 162 wxMenu* GetMenu() const {return m_menu;} 163 wxString GetLabel() {return m_label;} 164 165 static wxMenu *DuplicateMenu(wxMenu *menu); 166 167 protected: 168 int m_id; 169 wxString m_label; 170 wxMenu *m_menu; 171 bool m_assigned; 172 }; 173 174 ButtonMenu m_LeftButton; 175 ButtonMenu m_RightButton; 176 HWND m_MenuBarHWND; 177 178 void ReloadButton(ButtonMenu& button, UINT menuID); 179 void ReloadAllButtons(); 180#endif // __SMARTPHONE__ && __WXWINCE__ 181 182private: 183 // helper of SetIcons(): calls gets the icon with the size specified by the 184 // given system metrics (SM_C{X|Y}[SM]ICON) from the bundle and sets it 185 // using WM_SETICON with the specified wParam (ICOM_SMALL or ICON_BIG) 186 void DoSelectAndSetIcon(const wxIconBundle& icons, int smX, int smY, int i); 187 188 189#if defined(__SMARTPHONE__) || defined(__POCKETPC__) 190 void* m_activateInfo; 191#endif 192 193 DECLARE_EVENT_TABLE() 194 DECLARE_NO_COPY_CLASS(wxTopLevelWindowMSW) 195}; 196 197#endif // _WX_MSW_TOPLEVEL_H_ 198