implemented radio menu items for wxMSW

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@14696 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Vadim Zeitlin
2002-03-21 02:35:08 +00:00
parent aae736694e
commit 0472ece753
10 changed files with 196 additions and 52 deletions

View File

@@ -13,8 +13,8 @@
#ifndef _WX_FEATURES_H_
#define _WX_FEATURES_H_
// radio menu items are currently only implemented in wxGTK
#if defined(__WXGTK__) // || defined(__WXMSW__)
// radio menu items are currently only implemented in wxGTK and wxMSW
#if defined(__WXGTK__) || defined(__WXMSW__)
#define wxHAS_RADIO_MENU_ITEMS
#else
#undef wxHAS_RADIO_MENU_ITEMS

View File

@@ -72,7 +72,8 @@ public:
wxItemKind GetKind() const { return m_kind; }
virtual void SetCheckable(bool checkable) { m_kind = wxItem_Check; }
bool IsCheckable() const { return m_kind == wxItem_Check; }
bool IsCheckable() const
{ return m_kind == wxItem_Check || m_kind == wxItem_Radio; }
bool IsSubMenu() const { return m_subMenu != NULL; }
void SetSubMenu(wxMenu *menu) { m_subMenu = menu; }

View File

@@ -1,5 +1,5 @@
/////////////////////////////////////////////////////////////////////////////
// Name: menu.h
// Name: wx/msw/menu.h
// Purpose: wxMenu, wxMenuBar classes
// Author: Julian Smart
// Modified by: Vadim Zeitlin (wxMenuItem is now in separate file)
@@ -63,6 +63,8 @@ public:
// implementation only from now on
// -------------------------------
virtual void Attach(wxMenuBarBase *menubar);
bool MSWCommand(WXUINT param, WXWORD id);
// semi-private accessors
@@ -91,9 +93,15 @@ private:
// common part of Append/Insert (behaves as Append is pos == (size_t)-1)
bool DoInsertOrAppend(wxMenuItem *item, size_t pos = (size_t)-1);
// terminate the current radio group, if any
void EndRadioGroup();
// if TRUE, insert a breal before appending the next item
bool m_doBreak;
// the position of the first item in the current radio group or -1
int m_startRadioGroup;
// the menu handle of this menu
WXHMENU m_hMenu;

View File

@@ -60,7 +60,19 @@ public:
// menu handle depending on what we're
int GetRealId() const;
// mark item as belonging to the given radio group
void SetRadioGroup(int start, int end)
{
m_startRadioGroup = start;
m_endRadioGroup = end;
}
private:
// the positions of the first and last items of the radio group this item
// belongs to or -1
int m_startRadioGroup,
m_endRadioGroup;
DECLARE_DYNAMIC_CLASS(wxMenuItem)
};