Gelöst: WX: Umgang mit wxAuiManager & wxAuiToolBar



  • Hallo,

    wie kann ich eine andockbare wxAuiToolBar richtig mit dem wxAuiManager verwenden?

    MainFrame.h

    #pragma once
    
    #include <wx/wx.h>
    #include <wx/aui/aui.h>
    
    class MainFrame : public wxFrame
    {
    private:
    	wxAuiManager* m_AuiManager;
    
    public:
    	MainFrame(void);
    	virtual ~MainFrame(void);
    };
    

    MainFrame.cpp

    #include "MainFrame.h"
    
    MainFrame::MainFrame(void)
    : wxFrame(NULL, NULL, wxT("MainFrame"))
    {
    	this->m_AuiManager = new wxAuiManager(this);
    
    	wxAuiToolBar*	ToolBar;
    
    	ToolBar	= new wxAuiToolBar(this, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxAUI_TB_DEFAULT_STYLE);
    	this->SetToolBar(NULL);
    
    	ToolBar->AddTool(wxID_ANY, wxT("tool"), wxNullBitmap);
    	ToolBar->AddTool(wxID_ANY, wxT("tool"), wxNullBitmap);
    	ToolBar->AddTool(wxID_ANY, wxT("tool"), wxNullBitmap);
    
    	this->m_AuiManager->AddPane(ToolBar, wxAuiPaneInfo().
    		Name(wxT("ToolBar")).Caption(wxT("Toolbar")).
    		ToolbarPane().Top().
    		LeftDockable(false).RightDockable(false));
    
    	ToolBar->Realize();
    
    	this->m_AuiManager->Update();
    }
    
    MainFrame::~MainFrame(void)
    {
    	this->m_AuiManager->UnInit();
    }
    

    Wenn ich diesen Code, den ich nach meinem Verständis aus dem AUI Beispiel (auidemo.cpp) gezogen habe, verwende, dockt sich die Toolbar beim ausführen über die gesamte Fläche des Frames. Wenn man an dem Gripper mit der Maus zieht, dockt sie richtig an, was aber nach dem Verändern der Größe des Frames wieder rückgängig gemacht wird.

    Was mache ich falsch?

    Gruß
    Fabian



  • Lösung:
    Man muss das Size-Event "skippen", da sich der Aui-Manager ja um alles kümmert.

    void MainFrame::OnSize(wxSizeEvent& event)
    {
    	event.Skip(false);
    }
    

Log in to reply