Toolbar wird nach Portierung von CToolBar nach CMFCToolBar nicht mehr angezeigt
-
Hallo Karsten, hallo Martin,
vielen Dank zunächst mal für Eure Unterstützung!
CWinAppEx, CFrameWndEx hab ich natürlich drin. Könnte sonst nicht übersetzen.
Und, es passiert eben kein Fehler. Läuft anstandslos durch und beendet auch,
wie beschrieben, mit Memory-Leaks. Von denen dachte ich allerdings,
ich würde sie auch wieder weg bekommen.Ich habs im Debugger auch mit einem Beispiel verglichen "ToolBarDemo" aus CodeProject.
Es verhält sich exakt gleich.
Nur wird bei mir leider keine Toolbar angezeigt.
Ach .... In dieser ToolBarDemo gibts keine Memory Leaks.Merkwürdig war das Verhalten der Statusbar.
Ich hatte zunächst die alte belassen. Die wurde aber auch nicht angezeigt.
Hab sie dann gegen die neue ausgetauscht (CMFCStatusBar), dann war sie wieder da.Aber ich muss mir noch die andere Sache, die Karsten genannt hat, mit diesen Events, ansehen.
Grüsse
Helmut
-
Mach mal die Registry Einstellungen für Dein Programm weg. (HKCU)
-
Habe mal alles, was ich unter der Bezeichnung meines Programms gefunen habe,
aus HKEY_CURRENT_USER/Software gelöscht. Das sind hauptsächlich Einstellungen,
die über das Programm gespeichert werden und die ich damit auch bewusst anlege.
Dann gab es da auich noch an anderer Stelle etwas, das mit "ControlBars-Summary"
endete. Das hab ich auch gelöscht. Mehr hab ich nicht gefunden.Leider war es ohne Erfolg.
@Karsten:
Zu dem, was Du unter "OnNeedText(..)" zusammengefast hast, gibt es bei mir nichts
Analoges.
-
Erzeuge mal eine Version mit dem Wizard und vergleiche die Stellen, mit dem Main-Toolbar.
-
Danke Martin, werd ich machen.
Hat aber leider nichs gebracht, ausser dass nun gar nichts mehr geht.
-
Nun kann ich doch wieder mein Problem selbst lösen.
Vielleicht nutzt es ja irgend jemanden ausser mir auch noch.
Und wie immer ist es nur der Zufall, der zuhilfe kommt.Ich bin in meiner alten Version auf folgende drei Zeilen gestossen,
die in der neuen Version, wegen den Portierungsanweisungen aus dem Netz,
verloren gingen und habe damit rumgespielt.EnableDocking(CBRS_ALIGN_ANY); m_wndCommandBar.EnableDocking(CBRS_ALIGN_ANY); DockControlBar(&m_wndCommandBar);
Dann habe ich in meinem Quellcode von ganz oben folgende Ergänzung gemacht.
EnableDocking(CBRS_ALIGN_ANY); m_wndCommandBar.EnableDocking(CBRS_ALIGN_ANY); DockPane(&m_wndCommandBar);
Bzw. den Teil ab "// m_wndCommandBar.UpdateButton(0);" bis zum Schluss
damit ausgetauscht.Es fehlte also nur das
EnableDocking(CBRS_ALIGN_ANY);
Aber trotzdem vielen Dank nochmals für die Hilfe.
Leider ist man immer auf den Zufall angewiesen, da man sich die Dinge,
mangels Dokumentation, einfach nicht mehr logisch herleiten kann.Grüsse
Helmut
-
Hi,
ja das ist es, man redet mit anderen über die Probleme, dabei eröffnen sich
verborgene Welten.Was ist jetzt mit dem Memory Leak ?
Das ist nämlich noch da, solange Du Dialogbasierend bist, ohne den gesamten MFC -new Wust..
Gruß
Karsten
-
Hi Karsten,
ich habe heute noch nicht weiter daran gearbeitet.
Es ist allerdings eine SDI-Anwendung.Die Beispiele aus dem Netz hinterlassen keine Memory-Leaks.
Ich muss auch noch nachsehen, ob die das "EnableDocking(CBRS_ALIGN_ANY);"
weglassen konnten oder ob das an einer anderen Stelle versteckt ist.Alte und neue Toolbar reagieren auch völlig anders auf die eigentlich
analogen Operationen.Die Ebene, auf der ich mich da bewege hat nix mit Logik zu tun
aber auch gar nix. Alles Willkür!Grüsse
Helmut
-
Nun stehe ich vor dem nächsten Problem.
Die Anwendung stürzt nun beim Beenden ab, weil der DockManager die Parent-Klasse
nicht findet. Genauer gesagt, das "RemovePaneFromDockManager(..)" geht schief.Alle Frames und Apps habe ich von den entsprechenden -Ex Klassen abgeleitet,
aber mein Parent ist beim Beenden plötzlich nur noch eine Wnd-Klasse.
Beim Erzeugen der Toolbar ist noch alles in Ordnung.Zuvor hatte ich tatsächliche das fehlende "EnableDocking(CBRS_ALIGN_ANY);"
übersehen, da es in meinen Beispielen zu finden ist und in meiner alten
Anwendung.Da nun die Anwendung immer abstürzt, kann ich nicht einmal herausfinden,
ob ich noch Mem-Leaks habe.Grüsse
Helmut
-
Hi,
wie schon anfangs gesagt, wenn du nicht das komplette Frameset von BCG einsetzt
endet die Sache am Ende mit einem instabilen Zustand, ehe man das nun alles erforscht , kopiere gleich deine ganze alte SDI Applikation in das neue Gerußt.Es haben schon viele versucht diese "neuere" Toolbar zu verwenden, und haben es dann sein gelassen.
Ich habe diese Toolbar in einer Dialogbasierenden Anwendung gehalten, und es gab stress damit.
Die alte Toolbar ist gut, oder verwende ein neues Gerußt.
Hab Spaß mit dem was geht ^^
Gruß
Karsten