0

実行時にアイテムが追加および削除される 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 ツールバーを正しく更新するために何をすべきか教えてもらえますか (最初にツールを追加した後、うまく機能します)。

ヒント: サイズ イベントのホスティング フレームはスキップされます。

Windows 7 で wxWidgets 3.01 を使用し、64 の静的ビルドをデバッグします。リリースビルドでも同じことが起こります。

ありがとうございました

4

1 に答える 1