本文整理汇总了C++中BMenu::InvalidateLayout方法的典型用法代码示例。如果您正苦于以下问题:C++ BMenu::InvalidateLayout方法的具体用法?C++ BMenu::InvalidateLayout怎么用?C++ BMenu::InvalidateLayout使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类BMenu
的用法示例。
在下文中一共展示了BMenu::InvalidateLayout方法的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: copy_font
void ArpMenuBar::copy_font(BMenu* menu, BFont* font)
{
if( !menu ) return;
int32 num = menu->CountItems();
for( int32 i=0; i<num; i++ ) {
BMenu* child = menu->SubmenuAt(i);
if( child ) {
copy_font(child,font);
child->SetFont(font);
child->InvalidateLayout();
}
}
}
示例2: copy_attrs
void ArpMenuField::copy_attrs(BMenu* menu)
{
if( !menu ) return;
int32 num = menu->CountItems();
for( int32 i=0; i<num; i++ ) {
BMenu* child = menu->SubmenuAt(i);
if( child ) {
copy_attrs(child);
// the menu doesn't seem to see this.
child->SetFont(&PV_MenuFont);
child->SetHighColor(PV_MenuForeColor);
child->SetLowColor(PV_MenuBackColor);
child->SetViewColor(PV_MenuBackColor);
child->InvalidateLayout();
}
}
}
示例3: ComputeDimens
void ArpMenuField::ComputeDimens(ArpDimens& cur_dimens)
{
BMenu* menu = MenuBar();
BMenu* popup = Menu();
if( menu ) {
copy_attrs(menu);
copy_attrs(popup);
menu->SetFont(&PV_MenuFont);
menu->InvalidateLayout();
}
get_view_dimens(&cur_dimens, this, false);
font_height fhs;
BasicFont()->GetHeight(&fhs);
const float fh = fhs.ascent+fhs.descent+fhs.leading;
float fw = BasicFont()->StringWidth("WWWW");
float pref_w=0;
if( popup ) {
int32 num = popup->CountItems();
for( int32 i=0; i<num; i++ ) {
BMenuItem* item = popup->ItemAt(i);
if( item ) {
const float w=BasicFont()->StringWidth(item->Label());
ArpD(cdb << ADH << "Dimensions for popup label "
<< item->Label() << ": " << w << endl);
if( w > pref_w ) pref_w = w;
}
}
}
cur_dimens.Y().SetTo(0, fh+12, fh+12, fh+12, 0);
float labelWidth = (Label() && *Label())
? BasicFont()->StringWidth(Label()) + BasicFont()->StringWidth(" ")
: 0;
cur_dimens.X().SetTo(labelWidth,
(fw < pref_w ? fw : pref_w) + 20,
pref_w + 20, pref_w + 20,
0);
}