]>
git.saurik.com Git - wxWidgets.git/blob - include/wx/msw/menu.h
1 /////////////////////////////////////////////////////////////////////////////
3 // Purpose: wxMenu, wxMenuBar classes
4 // Author: Julian Smart
5 // Modified by: Vadim Zeitlin (wxMenuItem is now in separate file)
8 // Copyright: (c) Julian Smart and Markus Holzem
9 // Licence: wxWindows license
10 /////////////////////////////////////////////////////////////////////////////
16 #pragma interface "menu.h"
26 WXDLLEXPORT_DATA(extern const char*) wxEmptyString
;
28 // ----------------------------------------------------------------------------
30 // ----------------------------------------------------------------------------
31 class WXDLLEXPORT wxMenu
: public wxEvtHandler
33 DECLARE_DYNAMIC_CLASS(wxMenu
)
37 wxMenu(const wxString
& title
= wxEmptyString
, const wxFunction func
= NULL
);
41 // append items to the menu
43 void AppendSeparator();
45 void Append(int id
, const wxString
& Label
, const wxString
& helpString
= wxEmptyString
,
46 bool checkable
= FALSE
);
48 void Append(int id
, const wxString
& Label
, wxMenu
*SubMenu
,
49 const wxString
& helpString
= wxEmptyString
);
50 // the most generic form (create wxMenuItem first and use it's functions)
51 void Append(wxMenuItem
*pItem
);
52 // insert a break in the menu
55 void Delete(int id
); /* If it's a submenu, menu is not destroyed. VZ: why? */
58 void Enable(int id
, bool Flag
);
59 bool Enabled(int id
) const;
60 inline bool IsEnabled(int id
) const { return Enabled(id
); };
61 void Check(int id
, bool Flag
);
62 bool Checked(int id
) const;
63 inline bool IsChecked(int id
) const { return IsChecked(id
); };
67 void SetTitle(const wxString
& label
);
68 const wxString
& GetTitle() const;
70 void SetLabel(int id
, const wxString
& label
);
71 wxString
GetLabel(int id
) const;
73 virtual void SetHelpString(int id
, const wxString
& helpString
);
74 virtual wxString
GetHelpString(int id
) const ;
77 // Finds the item id matching the given string, NOT_FOUND if not found.
78 virtual int FindItem(const wxString
& itemString
) const ;
79 // Find wxMenuItem by ID, and item's menu too if itemMenu is !NULL.
80 wxMenuItem
*FindItemForId(int itemId
, wxMenu
**itemMenu
= NULL
) const;
82 void ProcessCommand(wxCommandEvent
& event
);
83 inline void Callback(const wxFunction func
) { m_callback
= func
; }
85 virtual void SetParent(wxEvtHandler
*parent
) { m_parent
= parent
; }
86 inline void SetEventHandler(wxEvtHandler
*handler
) { m_eventHandler
= handler
; }
87 inline wxEvtHandler
*GetEventHandler(void) { return m_eventHandler
; }
90 bool MSWCommand(WXUINT param
, WXWORD id
);
92 void SetInvokingWindow(wxWindow
*pWin
) { m_pInvokingWindow
= pWin
; }
93 wxWindow
*GetInvokingWindow() const { return m_pInvokingWindow
; }
95 // semi-private accessors
96 // get the window which contains this menu
97 wxWindow
*GetWindow() const;
98 // get the menu handle
99 WXHMENU
GetHMenu() const;
105 // This is used when m_hMenu is NULL because we don't want to
106 // delete it in ~wxMenu (it's been added to a parent menu).
107 // But we'll still need the handle for other purposes.
108 // Might be better to have a flag saying whether it's deleteable or not.
109 WXHMENU m_savehMenu
; // Used for Enable() on popup
111 wxFunction m_callback
;
115 wxMenu
* m_topLevelMenu
;
116 wxMenuBar
* m_menuBar
;
118 wxEvtHandler
* m_parent
;
119 wxEvtHandler
* m_eventHandler
;
120 wxWindow
*m_pInvokingWindow
;
123 // ----------------------------------------------------------------------------
124 // Menu Bar (a la Windows)
125 // ----------------------------------------------------------------------------
127 class WXDLLEXPORT wxMenuBar
: public wxEvtHandler
129 DECLARE_DYNAMIC_CLASS(wxMenuBar
)
132 wxMenuBar(int n
, wxMenu
*menus
[], const wxString titles
[]);
135 void Append(wxMenu
*menu
, const wxString
& title
);
136 // Must only be used AFTER menu has been attached to frame,
137 // otherwise use individual menus to enable/disable items
138 void Enable(int Id
, bool Flag
);
139 bool Enabled(int Id
) const ;
140 inline bool IsEnabled(int Id
) const { return Enabled(Id
); };
141 void EnableTop(int pos
, bool Flag
);
142 void Check(int id
, bool Flag
);
143 bool Checked(int id
) const ;
144 inline bool IsChecked(int Id
) const { return Checked(Id
); };
145 void SetLabel(int id
, const wxString
& label
) ;
146 wxString
GetLabel(int id
) const ;
147 void SetLabelTop(int pos
, const wxString
& label
) ;
148 wxString
GetLabelTop(int pos
) const ;
149 virtual void Delete(wxMenu
*menu
, int index
= 0); /* Menu not destroyed */
150 virtual bool OnAppend(wxMenu
*menu
, const char *title
);
151 virtual bool OnDelete(wxMenu
*menu
, int index
);
153 virtual void SetHelpString(int Id
, const wxString
& helpString
);
154 virtual wxString
GetHelpString(int Id
) const ;
156 virtual int FindMenuItem(const wxString
& menuString
, const wxString
& itemString
) const ;
158 // Find wxMenuItem for item ID, and return item's
159 // menu too if itemMenu is non-NULL.
160 wxMenuItem
*FindItemForId(int itemId
, wxMenu
**menuForItem
= NULL
) const ;
162 inline void SetEventHandler(wxEvtHandler
*handler
) { m_eventHandler
= handler
; }
163 inline wxEvtHandler
*GetEventHandler(void) { return m_eventHandler
; }
166 wxEvtHandler
* m_eventHandler
;
170 wxFrame
* m_menuBarFrame
;