Scrollbalken reagiert nicht
-
Hi!
Ein neuer Tag und somit auch ein neues MFC Problem :). Sorry, wenn ich hier viele Fragen stelle, aber ich habe nicht damit gerechnet dass ich mich in meinem Praktium mit der MFC herumschlagen muss, sonst hätte ich mich natürlich schon früher damit befasst.
Nun zum Problem:
Da ich meine Controls dynamisch erzeuge, bin ich auf Probleme gestoßen wenn ich meine Controls auf die einzelenen Tab-Seiten zuweise und diese im Nachhinein wieder anderen Tab-Seiten zuordne.
Aus diesem Grund habe ich die OnPaint() überschrieben und meine Controls mit einer Information versehen, die mir sagt zu welcher Tab-Seite es gehört. Somit zeige ich einfach die an, die angezeigt werden sollen.
Ich zeichne die Controls direkt auf dem TabControl, da dies bereits einen passenden Patz dazu anbietet.
Die Größe des TabControls wird dynamisch angepasst. Füge ich mehr Controls hinzu, als Platz auf dem Tab-Control ist vergrößere ich einfach das Tab-Control.
Das Problem dabei ist nun, dass der Scroll-Balken des Haupt-Dialogs nicht auf die Änderung der Große des TabControls reagiert.
Die Größe ändere ich mit Hilfe der MoveWindow(CRect) Methode.
Der Scroll-Balken wird nur dann angezeigt wenn ich das Fenster kleiner als es, ursprünglich wie mit dem GUI-Editor erstellt, wird.
Lg und Danke
Kerberos
-
Was für ein Rollbalken? SDI- Formview?
Normalerweise haben weder Dialoge noch Tab-Controls einen Rollbalken.
-
Hi Martin,
Also das TabControl liegt genau auf dem FormView eines SDI.
Das seltsame daran ist, dass der Scrollbalken nur auf die ursprüngliche Größe des Tab-Controls reagiert.
Das heisst dass der Scrollbalken nur angezeigt wird wenn ich das Fenster kleiner mache als das TabControl ursprünglich (wie im GUI-Builder festgelegt) war.Wenn ich das TabControl vergrößere reagiert der Parent-Dialog (FormView) nicht darauf. Ich hab den Verdacht, dass es
evtl. daran liegt dass ich das TabControl nicht in der OnSize()-Methode verändere, sondern in einem Eventhandler
eines Buttons. Aber für meinen Zweck ist das auch nicht sinnvoll:Sobald der Benutzer eine neue Datei lädt, sollen die Conrols dynamisch hinzugefügt werden und
es muss sollte sich auch das TabControl vergrößert werden:Vorgehensweise:
CRect WndRect = m_TabControl.GetClientRect(WndRect); //Berechnungen WndRect = new CRect( 10, 10, WndRect.right+10, iValue+10); m_TabControl.MoveWindow(WndRect);Lg und Danke
Kerberos
-
Du musst schonbmit SetScrollSizes die Größe Deines Controls/Bereiche angeben, dann werden auch die Rollbalken korrekt gesetzt!
-
Hi Martin,
Vielen Dank!
So wie es aussieht, kannst du jede Frage über die MFC aus dem Stehgreif beantworten
Kannst du mir evtl. ein Buch empfehlen, dass nicht nur auf die Grundlangen der MFC eingeht
(z. B. Was ist ein CButton und wie platziere ich diesen mit dem GUI-Builder auf einem Form)
und das ich auch als Nachschlagewerk verwenden kann?Lg und Danke
Kerberos
-
Mein Favorit ist immer der Kruglinski gewesen, der IMHO nicht mehr erhältlich ist.
Aber ob Dir das tief genug geht weiß ich nicht.Das meiste habe ich durch debuggen der MFC gelernt und lesen der Source Code der MFC

BTW: Ich arbeite mit der MFC seit der Version 1.0 und kann mich schon gar nicht mehr erinnern wann das war... Könnte so um die 1993 gewesen sein!