Add detachmenu, insert menu, replace menu.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@3631 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Unknown (MT) 1999-09-13 07:13:16 +00:00
parent bfa2e032ef
commit 1cf27c6349

View File

@ -697,6 +697,9 @@ void wxMenuBar::Refresh()
WXHMENU wxMenuBar::Create()
{
if (m_hMenu != 0 )
return m_hMenu;
wxCHECK_MSG( !m_hMenu, TRUE, _T("menubar already created") );
m_hMenu = (WXHMENU)::CreateMenu();
@ -924,6 +927,75 @@ bool wxMenuBar::OnAppend(wxMenu *a_menu, const wxChar *title)
// ---------------------------------------------------------------------------
// wxMenuBar construction
// ---------------------------------------------------------------------------
int wxMenuBar::FindMenu(const wxString& title)
{
wxString menuTitle = wxStripMenuCodes(title);
for ( int i = 0; i < m_menuCount; i++ )
{
wxString title = wxStripMenuCodes(m_titles[i]);
if ( menuTitle == title )
return i;
}
return wxNOT_FOUND;
}
void wxMenuBar::ReplaceMenu(int pos, wxMenu * new_menu, const wxString& title)
{
if (m_menuBarFrame) return;
if ( pos >= 0 && pos < m_menuCount )
{
wxMenu *old_menu = m_menus[pos];
m_menus[pos] = new_menu;
delete old_menu;
}
}
void wxMenuBar::Insert(int pos, wxMenu * menu, const wxString& title)
{
if (m_menuBarFrame) return;
if ( pos < 0 && pos >= m_menuCount ) return;
m_menuCount ++;
wxMenu **new_menus = new wxMenu *[m_menuCount];
wxString *new_titles = new wxString[m_menuCount];
int i;
for (i = 0; i < pos; i++)
{
new_menus[i] = m_menus[i];
m_menus[i] = NULL;
new_titles[i] = m_titles[i];
m_titles[i] = _T("");
}
new_menus[pos] = (wxMenu *)menu;
new_titles[i] = title;
for (i = pos+1; i < m_menuCount; i++)
{
new_menus[i] = m_menus[i-1];
m_menus[i-1] = NULL;
new_titles[i] = m_titles[i-1];
m_titles[i-1] = _T("");
}
if (m_menus)
{
delete[]m_menus;
delete[]m_titles;
}
m_menus = new_menus;
m_titles = new_titles;
menu->SetParent(this);
}
void wxMenuBar::Append (wxMenu * menu, const wxString& title)
{
@ -1019,6 +1091,14 @@ void wxMenuBar::Attach(wxFrame *frame)
#endif // wxUSE_ACCEL
}
void wxMenuBar::Detach()
{
// ::DestroyMenu((HMENU)m_hMenu);
m_hMenu = NULL;
m_menuBarFrame = NULL;
}
// ---------------------------------------------------------------------------
// wxMenuBar searching for menu items
// ---------------------------------------------------------------------------