2012-04-04 10 views
0

Hauptziel ist es, Tabs innerhalb des Zeichenbereichs der Symbolleiste der Anwendung für ein Notizbuch oder Tabs zu zeichnen, um den obigen Platz zu verwenden, anstatt unter der Symbolleiste zu sein.Überzeichnung in der Symbolleiste? Alternative Idee?

Das Rahmenwerk, das wir verwenden, ist WxWidgets, C++/C. Ich habe mich umgeschaut, aber ich war nicht in der Lage, eine Lösung zu finden, oder wenn jemand einen ähnlichen Ansatz verfolgt hat, indem er Tabs in der Werkzeugleiste selbst gezeichnet hat.

Ich lese einige Microsoft MSDN Artikel und sie empfehlen gegen Steuerelemente über Steuerelemente.

Ich habe heute einige Tests gemacht und denke, dass ich eine Lösung gefunden habe. Meine Lösung ist, das Fenster wie normal zu zeichnen, aber das Notizbuch auf der rechten Seite in einem untergeordneten Fenster, das dynamisch angepasst und neu positioniert wird, so dass seine Registerkarten über der Symbolleiste eingeblendet werden, um den Bereich optimal zu nutzen. Ich würde mich mit dem Fokus beschäftigen und Fokusfenster-Nachrichten verlieren müssen, aber das ist die eleganteste Art, wie ich über das Erreichen der Aufgabe nachdenken kann.

Irgendwelche Ideen, die Sie empfehlen können, oder Probleme, denen ich bei diesem Ansatz begegnen könnte.

mockup

Antwort

1

würde ich über die Verwendung von überlappenden Widgets wie diese betroffen sein. Obwohl es optisch vielleicht nicht ganz so aussieht, würde ich vorschlagen, dass Sie wxToolBook betrachten, das Registerkarten in einer Symbolleiste platziert und Ihr Problem lösen würde, können Sie die GetToolBar Methode verwenden, um Ihre eigenen Symbolleistenelemente einzufügen.

Wenn das visuell nicht nah genug an dem war, was Sie erreichen möchten, empfehle ich, ein neues Steuerelement aus wxBookCtrlBase abzuleiten und dann ein Tab-Steuerelement mit benutzerdefinierten Tabs zu erstellen, die Sie mit wxToolBar::AddControl zur Symbolleiste hinzufügen können.