Statusleiste in ein Dialogbasiertes MFC Projekt einfügen

RuFFnEcK

Erfahrenes Mitglied
Auch hier sagt der Titel alles^^

Ich hab ein Dialogbasiertes MFC Projekt gestartet und versuch den ganzen Tag schon,
da irgendwie ein CStatusBar Objekt einzufügen und vorallem zu benutzen!
Ich bekomms net hin :(
Die blöde MFC ToolBox ist ja auf ein erbärmliches minimum beschnitten...Warum?
Kann ich die ToolBox erweitern um in Dialogen ein paar mehr Dinge wie z.B. StatusBar nutzen zu können?

Naja jedenfalls gehts mir erstmal darum in dem einen Dialog ne StatusLeiste einzufügen.

Wäre super dankbar wenn mir jemand helfen könnte...

Grüße RuFF
 
Ich habe das so eingebaut:
Code:
// StatusBar erzeugen
CStatusBarCtrl* m_StatusBar;
m_StatusBar = new CStatusBarCtrl;
m_StatusBar->Create(WS_CHILD|WS_VISIBLE, CRect(0, 0, 0, 0), this, 0);
 
// StatusBar einteilen
int nTeilung[3]= {240, 320, -1};
m_StatusBar->SetParts(3, nTeilung);
 
// Text in die einzelnen Spalten schreiben
m_StatusBar->SetText(("StatusBar im Dialog - Spalte 1"),0, 0);
m_StatusBar->SetText(("Spalte 2"), 1, 0);
m_StatusBar->SetText(("Spalte 3"), 2, 0);
Und nicht vergessen das mit "new" angelegte Objekt wieder zu löschen.
 
Ja super geil ;)
Das ist die beste Lösung die ich bisher gesehen hab^^
Werds genauso machen *g*
Dir vielen Dank!

Grüße
RuFF
 
Und wenn du noch ein Icon mit anzeigen willst, dann hänge noch die Zeile mit unten dran:

Code:
// Icon in erster Spalte anzeigen
m_StatusBar->SetIcon(0, AfxGetApp()->LoadIcon(IDI_ICON1));
 
Hallöchen,
ich hab den Code grad eingefügt und es wird mir nen Dialogfeld erstellt,
aber eben nur in der momentanen Größe des Fensters...
Die Statusbar ist ab dem Moment auf die Position fixiert...

Wie kann ich das CControlBar Objekt veranlassen sich jederzeit an die fenstergröße anzupassen?
Und wenn das nicht geht, kann ich mich ja selbst drum kümmern und skalierungsfunktionen
in die OnPaint() und OnResize() Methoden einfügen, nur wie sähe für diese Art eine Skalierungsfunktion aus

Grüsse
RuFF
 
Die -1 in
Code:
int nTeilung[3]= {240, 320, -1};
heißt eigentlich, daß die letzte Spalte des Staus-Bar bis zum Ender der Fensterbreite geht. Das sollte eigentlich auch automatisch passieren. Die anderen Spalten mußt Du selber im OnSize(...) anpassen und setzen.
 
Ich denke das problem ist dass es sich bei meinem Projekt um ein auf Dailogfeldern basierenden Projekt handelt...
Hierbei wird bei änderung des fenster kein WM_SIZE Nachricht an die statusbar gesendet,
wie in der MSDN eigentlich beschrieben...
Wie sieht denn eine Größe setze methode der StatusBar aus?
Die redraw methode nicht...

EDIT: Danke für die ultraschnelle Antwort^^
Wollt mich scon um andere Dinge kümmern weil ich nicht mit so einer schnellen Antwort gerechnet hatte ;)
 
Zuletzt bearbeitet:
Du mußt das in der OnSize(...) des Dialoges machen. Dort machst Du das wie nach dem Erzeugen mit
Code:
nTeilung[0] = neuerwert;
 nTeilung[1] = neuerwert;
 m_StatusBar->SetParts(3, nTeilung);
Den neuen Wert mußt Du natürlich ausrechnen.
 
Zurück