ControlBar wird erst angezeigt, wenn Fenstergröße verändert wird
-
Vielen Dnak für die Antwort. Leider hat MoveWindow auch nichts bewirkt, genauso wie SetWindowPos.
Ich bin wirklich ratlos...
-
Code wäre hilfreich
-
Durch ganzen MDI/MFC Kram ist das einfach zu viel um es hier zu posten. Vielleicht schaff ich es anders besser zu präzisieren:
In OnSize vom ChildFrm ermittel ich ob das Fenster maximiert wurde. Daraufhin wird in einem dort global gespeicherten Objekt der CControlBar Klasse ShowWindow mit SW_HIDE aufgerufen.
Das wars eigentlich schon. Sagt mir welche Funktion euch sonst verdächtig sein könnte und ich poste sie sofort.
-
Auf welche Klasse hast du denn "RedrawWindow, UpdateWindow, InvalidateRect etc." aufgerufen?
-
Auf das Parent Window der CControlbar, welches ich via GetParent() bekam, also nach dem Motto:
CMyControlBar m_ctrl;
...
m_ctrl.GetParent()->UpdateWindow();
-
Und das ist dann das MDI-Fenster in dem es liegt? Was passiert, wenn du es direkt auf die ControlBar machst?
-
Das Problem hat sich lösen lassen...ich hab schließltich erfolg gehabt, als ich WM_SIZE an GetParentFrame() geschickt hab. muss man erstmal drauf kommen
Vielen Dank für jeden Tipp
-
Das ist Quark. Diese Nachricht verschickt man nicht.
Wie wäre es mit dem Aufruf von RecalcLayout gewesen.
Hast Du den COntrolbar sicherlich auch in OnCreate erzeugt?
-
Hey, RecalcLayout hat tatsächlich auch den erwünschten Effekt. Bei dem burtalen senden von WM_SIZE tauchten manchmal komische Erscheinungen auf, dennoch muss ich sagen, dass es halt funktioniert hat, auch wenn es gegen WINAPI-Ideologie spricht.
Vielen Dank
-
Es funktioniert! Das ist keine Lösung.
Grundsätzlich sollte man es sich von vorne herein abschminken interne Windows Nachrichten zu versenden!
Ein Blick in die OnSize Routine des Mainframes hätte Dir sofort eröffnet, dass Du nur die entsprechenden Funktionen, die auch hier verwendet werden direkt aufrufen musst/kannst!