本文整理汇总了C++中GetMenuCount函数的典型用法代码示例。如果您正苦于以下问题:C++ GetMenuCount函数的具体用法?C++ GetMenuCount怎么用?C++ GetMenuCount使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了GetMenuCount函数的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: GetMenuCount
void wxMenuBar::RebuildAccelTable()
{
//
// Merge the accelerators of all menus into one accel table
//
size_t nAccelCount = 0;
size_t i;
size_t nCount = GetMenuCount();
wxMenuList::iterator it;
for (i = 0, it = m_menus.begin(); i < nCount; i++, it++)
{
nAccelCount += (*it)->GetAccelCount();
}
if (nAccelCount)
{
wxAcceleratorEntry* pAccelEntries = new wxAcceleratorEntry[nAccelCount];
nAccelCount = 0;
for (i = 0, it = m_menus.begin(); i < nCount; i++, it++)
{
nAccelCount += (*it)->CopyAccels(&pAccelEntries[nAccelCount]);
}
m_vAccelTable = wxAcceleratorTable( nAccelCount
,pAccelEntries
);
delete [] pAccelEntries;
}
} // end of wxMenuBar::RebuildAccelTable
示例2: SetMenuBarFrame
// Destroy menubar, but keep data structures intact so we can recreate it.
bool wxMenuBar::DestroyMenuBar()
{
if (!m_mainWidget)
{
SetMenuBarFrame(NULL);
return false;
}
XtUnmanageChild ((Widget) m_mainWidget);
XtUnrealizeWidget ((Widget) m_mainWidget);
size_t menuCount = GetMenuCount();
for (size_t i = 0; i < menuCount; i++)
{
wxMenu *menu = GetMenu(i);
menu->DestroyMenu(true);
}
XtDestroyWidget((Widget) m_mainWidget);
m_mainWidget = (WXWidget) 0;
SetMenuBarFrame(NULL);
return true;
}
示例3: GetMenuCount
void wxMenuBar::RebuildAccelTable()
{
// merge the accelerators of all menus into one accel table
size_t nAccelCount = 0;
size_t i, count = GetMenuCount();
wxMenuList::iterator it;
for ( i = 0, it = m_menus.begin(); i < count; i++, it++ )
{
nAccelCount += (*it)->GetAccelCount();
}
if ( nAccelCount )
{
wxAcceleratorEntry *accelEntries = new wxAcceleratorEntry[nAccelCount];
nAccelCount = 0;
for ( i = 0, it = m_menus.begin(); i < count; i++, it++ )
{
nAccelCount += (*it)->CopyAccels(&accelEntries[nAccelCount]);
}
SetAcceleratorTable(wxAcceleratorTable(nAccelCount, accelEntries));
delete [] accelEntries;
}
else // No (more) accelerators.
{
SetAcceleratorTable(wxAcceleratorTable());
}
}
示例4: wxASSERT
int wxMenuBar::MSWPositionForWxMenu(wxMenu *menu, int wxpos)
{
wxASSERT(menu);
wxASSERT(menu->GetHMenu());
wxASSERT(m_hMenu);
#if defined(__WXWINCE__)
int totalMSWItems = GetMenuCount();
#else
int totalMSWItems = GetMenuItemCount((HMENU)m_hMenu);
#endif
int i; // For old C++ compatibility
for(i=wxpos; i<totalMSWItems; i++)
{
if(GetSubMenu((HMENU)m_hMenu,i)==(HMENU)menu->GetHMenu())
return i;
}
for(i=0; i<wxpos; i++)
{
if(GetSubMenu((HMENU)m_hMenu,i)==(HMENU)menu->GetHMenu())
return i;
}
wxFAIL;
return -1;
}
示例5: wxCHECK_MSG
// Gets the original label at the top-level of the menubar
wxString wxMenuBar::GetMenuLabel(size_t pos) const
{
wxCHECK_MSG( pos < GetMenuCount(), wxEmptyString,
wxT("invalid menu index in wxMenuBar::GetMenuLabel") );
return m_titles[pos];
}
示例6: wxCHECK_MSG
bool wxMenuBar::Append(wxMenu *menu, const wxString& title)
{
WXHMENU submenu = menu ? menu->GetHMenu() : 0;
wxCHECK_MSG( submenu, false, wxT("can't append invalid menu to menubar") );
if ( !wxMenuBarBase::Append(menu, title) )
return false;
menu->wxMenuBase::SetTitle(title);
#if defined(WINCE_WITHOUT_COMMANDBAR)
if (IsAttached())
#else
if (GetHmenu())
#endif
{
#if defined(WINCE_WITHOUT_COMMANDBAR)
if (!GetToolBar())
return false;
TBBUTTON tbButton;
memset(&tbButton, 0, sizeof(TBBUTTON));
tbButton.iBitmap = I_IMAGENONE;
tbButton.fsState = TBSTATE_ENABLED;
tbButton.fsStyle = TBSTYLE_DROPDOWN | TBSTYLE_NO_DROPDOWN_ARROW | TBSTYLE_AUTOSIZE;
size_t pos = GetMenuCount();
HMENU hPopupMenu = (HMENU) menu->GetHMenu() ;
tbButton.dwData = (DWORD)hPopupMenu;
wxString label = wxStripMenuCodes(title);
tbButton.iString = (int) label.wx_str();
tbButton.idCommand = NewControlId();
if (!::SendMessage((HWND) GetToolBar()->GetHWND(), TB_INSERTBUTTON, pos, (LPARAM)&tbButton))
{
wxLogLastError(wxT("TB_INSERTBUTTON"));
return false;
}
#else
if ( !::AppendMenu(GetHmenu(), MF_POPUP | MF_STRING,
(UINT_PTR)submenu, title.wx_str()) )
{
wxLogLastError(wxT("AppendMenu"));
}
#endif
#if wxUSE_ACCEL
if ( menu->HasAccels() )
{
// need to rebuild accelerator table
RebuildAccelTable();
}
#endif // wxUSE_ACCEL
if (IsAttached())
Refresh();
}
return true;
}
示例7: GetMenuCount
void wxMenuBar::RebuildAccelTable()
{
//
// Merge the accelerators of all menus into one accel table
//
size_t nAccelCount = 0;
size_t i;
size_t nCount = GetMenuCount();
wxMenuList::iterator it;
#if defined(__INTEL_COMPILER) && 1 // VDM auto patch
# pragma ivdep
# pragma swp
# pragma unroll
#endif
#if defined(__INTEL_COMPILER) && 1 /* VDM auto patch */
# pragma ivdep
# pragma swp
# pragma unroll
# pragma prefetch
# if 0
# pragma simd noassert
# endif
#endif /* VDM auto patch */
for (i = 0, it = m_menus.begin(); i < nCount; i++, it++)
{
nAccelCount += (*it)->GetAccelCount();
}
if (nAccelCount)
{
wxAcceleratorEntry* pAccelEntries = new wxAcceleratorEntry[nAccelCount];
nAccelCount = 0;
#if defined(__INTEL_COMPILER) && 1 // VDM auto patch
# pragma ivdep
# pragma swp
# pragma unroll
#endif
#if defined(__INTEL_COMPILER) && 1 /* VDM auto patch */
# pragma ivdep
# pragma swp
# pragma unroll
# pragma prefetch
# if 0
# pragma simd noassert
# endif
#endif /* VDM auto patch */
for (i = 0, it = m_menus.begin(); i < nCount; i++, it++)
{
nAccelCount += (*it)->CopyAccels(&pAccelEntries[nAccelCount]);
}
m_vAccelTable = wxAcceleratorTable( nAccelCount
,pAccelEntries
);
delete [] pAccelEntries;
}
} // end of wxMenuBar::RebuildAccelTable
示例8: wxCHECK_MSG
bool wxMenuBar::Enable(bool enable)
{
wxCHECK_MSG( IsAttached(), false, wxT("doesn't work with unattached menubars") );
size_t i;
for (i = 0; i < GetMenuCount(); i++)
EnableTop(i, enable);
return true;
}
示例9: GetMenuCount
void wxMenuBarBase::UpdateMenus()
{
wxMenu* menu;
int nCount = GetMenuCount();
for (int n = 0; n < nCount; n++)
{
menu = GetMenu( n );
if (menu != NULL)
menu->UpdateUI( NULL );
}
}
示例10: MSWGetTopMenuPos
int wxMenuBar::MSWGetTopMenuPos(WXHMENU hMenu) const
{
for ( size_t n = 0 ; n < GetMenuCount(); ++n )
{
wxMenu* menu = GetMenu(n)->MSWGetMenu(hMenu);
if ( menu )
return n;
}
return wxNOT_FOUND;
}
示例11: PreCreation
// Create menubar
bool wxMenuBar::CreateMenuBar(wxFrame* parent)
{
m_parent = parent; // bleach... override it!
PreCreation();
m_parent = NULL;
if (m_mainWidget)
{
XtVaSetValues((Widget) parent->GetMainWidget(), XmNmenuBar, (Widget) m_mainWidget, NULL);
/*
if (!XtIsManaged((Widget) m_mainWidget))
XtManageChild((Widget) m_mainWidget);
*/
XtMapWidget((Widget) m_mainWidget);
return true;
}
Widget menuBarW = XmCreateMenuBar ((Widget) parent->GetMainWidget(),
wxMOTIF_STR("MenuBar"), NULL, 0);
m_mainWidget = (WXWidget) menuBarW;
size_t menuCount = GetMenuCount();
for (size_t i = 0; i < menuCount; i++)
{
wxMenu *menu = GetMenu(i);
wxString title(m_titles[i]);
menu->SetButtonWidget(menu->CreateMenu (this, menuBarW, menu, i, title, true));
if (strcmp (wxStripMenuCodes(title), "Help") == 0)
XtVaSetValues ((Widget) menuBarW, XmNmenuHelpWidget, (Widget) menu->GetButtonWidget(), NULL);
// tear off menu support
#if (XmVersion >= 1002)
if ( menu->IsTearOff() )
{
XtVaSetValues(GetWidget(menu),
XmNtearOffModel, XmTEAR_OFF_ENABLED,
NULL);
Widget tearOff = XmGetTearOffControl(GetWidget(menu));
wxDoChangeForegroundColour((Widget) tearOff, m_foregroundColour);
wxDoChangeBackgroundColour((Widget) tearOff, m_backgroundColour, true);
}
#endif
}
PostCreation();
XtVaSetValues((Widget) parent->GetMainWidget(), XmNmenuBar, (Widget) m_mainWidget, NULL);
XtRealizeWidget ((Widget) menuBarW);
XtManageChild ((Widget) menuBarW);
SetMenuBarFrame(parent);
return true;
}
示例12: ChangeFont
bool wxMenuBar::SetFont(const wxFont& font)
{
m_font = font;
ChangeFont();
size_t menuCount = GetMenuCount();
for (size_t i = 0; i < menuCount; i++)
m_menus.Item(i)->GetData()->SetFont(font);
return true;
}
示例13: wxCHECK_RET
void wxMenuBar::EnableTop(size_t pos, bool enable)
{
wxCHECK_RET( IsAttached(), wxT("doesn't work with unattached menubars") );
wxCHECK_RET( pos < GetMenuCount(), wxT("invalid menu index") );
int flag = enable ? MF_ENABLED : MF_GRAYED;
EnableMenuItem((HMENU)m_hMenu, MSWPositionForWxMenu(GetMenu(pos),pos), MF_BYPOSITION | flag);
Refresh();
}
示例14: WX_CLEAR_LIST
const wxMenuInfoHelperList& wxMenuBarBase::GetMenuInfos() const
{
wxMenuInfoHelperList* list = const_cast< wxMenuInfoHelperList* > (& m_menuInfos);
WX_CLEAR_LIST( wxMenuInfoHelperList, *list);
for (size_t i = 0 ; i < GetMenuCount(); ++i)
{
wxMenuInfoHelper* info = new wxMenuInfoHelper();
info->Create( GetMenu(i), GetMenuLabel(i));
list->Append(info);
}
return m_menuInfos;
}
示例15: GetMenuCount
wxMenuItem *wxMenuBar::FindItem(int id, wxMenu **itemMenu) const
{
if ( itemMenu )
*itemMenu = NULL;
wxMenuItem *item = NULL;
size_t count = GetMenuCount();
for ( size_t i = 0; !item && (i < count); i++ )
item = _wxMenuAt(m_menus, i)->FindItem(id, itemMenu);
return item;
}