Неправильно обновлен wxAuiToolBar

Иметь wxAuiToolBar, к которому элементы добавляются и удаляются во время выполнения. К сожалению, при добавлении или удалении элемента панель инструментов не обновляется (закрашивается) правильно

Создание панели инструментов:

_toolbar = new wxAuiToolBar(this, wxID_ANY, wxDefaultPosition, wxDefaultSize,
                                     wxAUI_TB_DEFAULT_STYLE |
                                     wxAUI_TB_OVERFLOW |
                                     wxAUI_TB_TEXT | 
                                     wxAUI_TB_HORZ_TEXT);
_mgr.AddPane(_mdi_frames_toolbar, wxAuiPaneInfo().      
                    Name("tbxxx").Caption("xxx caption").ToolbarPane().Top().Gripper(true).Dockable(true).Floatable(true).CaptionVisible(false));
...
_mgr.Update();

Что я делаю при добавлении элемента:

            wxAuiToolBarItem* pItem=_toolbar->AddTool(wxID_TCMDI_FRAME_TOOL_TB + pchild->uid(),pchild->GetName(),wxNullBitmap,"",wxITEM_NORMAL);                                    
            _toolbar->Realize();

Это делает новый инструмент видимым, но верхняя и нижняя рамка панели инструментов отображаются перед новым инструментом. Повторяя это, он рано или поздно генерирует мусор. Кажется, что сама панель инструментов не обновляется должным образом.

Если я добавлю

_mgr.Update();

после AddTool инструмент не отображается, пока я не переместу панель инструментов с помощью захвата.

Может кто-нибудь сказать мне, что делать, чтобы правильно обновить панель инструментов aui, когда инструмент был добавлен (после начального добавления инструментов, который работает хорошо)?

Подсказка: фрейм хостинга по размеру пропускается.

Я использую wxWidgets 3.01 в Windows 7, отладка 64 статической сборки. То же самое происходит в сборке релиза.

Спасибо

1 ответ

Код в вопросе не добавляет _toolbar к менеджеру AUI, но я предполагаю, что это просто проблема копирования-вставки при создании вопроса.

Это выглядит довольно странно, но как насчет того, чтобы отсоединить панель инструментов от менеджера AUI, добавить элементы панели инструментов, а затем повторно присоединить менеджер AUI?

_mgr.DetachPane(_toolbar);
wxAuiToolBarItem* pItem = _toolbar->AddTool(
      wxID_TCMDI_FRAME_TOOL_TB + pchild->uid(),
     pchild->GetName(),
     wxNullBitmap,
     "",
     wxITEM_NORMAL
);
wxAuiPaneInfo info;
info.Name("tbxxx")
    .Caption("xxx caption")
    .ToolbarPane().Top()
    .Gripper(true).Dockable(true)
    .Floatable(true).CaptionVisible(false);
_mgr.AddPane(_toolbar, paneInfo);
Другие вопросы по тегам