X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/be15b995df23c3ca511098676fbdc872f59add80..8d43e8c68fd5d508a1628909c696fff938c9eb1e:/include/wx/msw/menuitem.h diff --git a/include/wx/msw/menuitem.h b/include/wx/msw/menuitem.h index 05a943f6f6..21be80c38f 100644 --- a/include/wx/msw/menuitem.h +++ b/include/wx/msw/menuitem.h @@ -1,54 +1,52 @@ /////////////////////////////////////////////////////////////////////////////// -// Name: menuitem.h +// Name: wx/msw/menuitem.h // Purpose: wxMenuItem class // Author: Vadim Zeitlin // Modified by: // Created: 11.11.97 // RCS-ID: $Id$ // Copyright: (c) 1998 Vadim Zeitlin -// Licence: wxWindows license +// Licence: wxWindows licence /////////////////////////////////////////////////////////////////////////////// #ifndef _MENUITEM_H #define _MENUITEM_H -#ifdef __GNUG__ - #pragma interface "menuitem.h" -#endif - // ---------------------------------------------------------------------------- // headers // ---------------------------------------------------------------------------- #if wxUSE_OWNER_DRAWN - #include "wx/ownerdrw.h" // base class + #include "wx/ownerdrw.h" + #include "wx/bitmap.h" + + struct tagRECT; #endif // ---------------------------------------------------------------------------- // wxMenuItem: an item in the menu, optionally implements owner-drawn behaviour // ---------------------------------------------------------------------------- -class WXDLLEXPORT wxMenuItem : public wxMenuItemBase +class WXDLLIMPEXP_CORE wxMenuItem : public wxMenuItemBase #if wxUSE_OWNER_DRAWN , public wxOwnerDrawn #endif { public: // ctor & dtor - wxMenuItem(wxMenu *parentMenu = (wxMenu *)NULL, + wxMenuItem(wxMenu *parentMenu = NULL, int id = wxID_SEPARATOR, const wxString& name = wxEmptyString, const wxString& help = wxEmptyString, wxItemKind kind = wxITEM_NORMAL, - wxMenu *subMenu = (wxMenu *)NULL); + wxMenu *subMenu = NULL); virtual ~wxMenuItem(); // override base class virtuals - virtual void SetText(const wxString& strName); - virtual void SetCheckable(bool checkable); + virtual void SetItemLabel(const wxString& strName); - virtual void Enable(bool bDoEnable = TRUE); - virtual void Check(bool bDoCheck = TRUE); + virtual void Enable(bool bDoEnable = true); + virtual void Check(bool bDoCheck = true); virtual bool IsChecked() const; // unfortunately needed to resolve ambiguity between @@ -57,21 +55,76 @@ public: // the id for a popup menu is really its menu handle (as required by // ::AppendMenu() API), so this function will return either the id or the - // menu handle depending on what we're - int GetRealId() const; + // menu handle depending on what we are + // + // notice that it also returns the id as an unsigned int, as required by + // Win32 API + WXWPARAM GetMSWId() const; // mark item as belonging to the given radio group void SetAsRadioGroupStart(); void SetRadioGroupStart(int start); void SetRadioGroupEnd(int end); +#if WXWIN_COMPATIBILITY_2_8 // compatibility only, don't use in new code + wxDEPRECATED( wxMenuItem(wxMenu *parentMenu, int id, const wxString& text, const wxString& help, bool isCheckable, - wxMenu *subMenu = (wxMenu *)NULL); + wxMenu *subMenu = NULL) + ); +#endif + +#if wxUSE_OWNER_DRAWN + + void SetBitmaps(const wxBitmap& bmpChecked, + const wxBitmap& bmpUnchecked = wxNullBitmap) + { + m_bmpChecked = bmpChecked; + m_bmpUnchecked = bmpUnchecked; + SetOwnerDrawn(true); + } + + void SetBitmap(const wxBitmap& bmp, bool bChecked = true) + { + if ( bChecked ) + m_bmpChecked = bmp; + else + m_bmpUnchecked = bmp; + SetOwnerDrawn(true); + } + + void SetDisabledBitmap(const wxBitmap& bmpDisabled) + { + m_bmpDisabled = bmpDisabled; + SetOwnerDrawn(true); + } + + const wxBitmap& GetBitmap(bool bChecked = true) const + { return (bChecked ? m_bmpChecked : m_bmpUnchecked); } + + const wxBitmap& GetDisabledBitmap() const + { return m_bmpDisabled; } + + int MeasureAccelWidth() const; + + // override wxOwnerDrawn base class virtuals + virtual wxString GetName() const; + virtual bool OnMeasureItem(size_t *pwidth, size_t *pheight); + virtual bool OnDrawItem(wxDC& dc, const wxRect& rc, wxODAction act, wxODStatus stat); + +protected: + virtual void GetFontToUse(wxFont& font) const; + virtual void GetColourToUse(wxODStatus stat, wxColour& colText, wxColour& colBack) const; + +private: + // helper function for draw std menu check mark + void DrawStdCheckMark(WXHDC hdc, const tagRECT* rc, wxODStatus stat); + +#endif // wxUSE_OWNER_DRAWN private: // common part of all ctors @@ -79,7 +132,7 @@ private: // the positions of the first and last items of the radio group this item // belongs to or -1: start is the radio group start and is valid for all - // but first radio group items (m_isRadioGroupStart == FALSE), end is valid + // but first radio group items (m_isRadioGroupStart == false), end is valid // only for the first one union { @@ -90,7 +143,14 @@ private: // does this item start a radio group? bool m_isRadioGroupStart; - DECLARE_DYNAMIC_CLASS(wxMenuItem) +#if wxUSE_OWNER_DRAWN + // item bitmaps + wxBitmap m_bmpChecked, // bitmap to put near the item + m_bmpUnchecked, // (checked is used also for 'uncheckable' items) + m_bmpDisabled; +#endif // wxUSE_OWNER_DRAWN + + DECLARE_DYNAMIC_CLASS_NO_COPY(wxMenuItem) }; #endif //_MENUITEM_H