Tabstops
-
Hi Martin,
ich habe ein kleines Problem mit deinem Code, den du für mich gepostet hast.
Zunächst habe ich den Code so abgeändert, dass überprüft wird ob sich der Focus geändert hat, da ich
den Code in einem Timer implementiert habe. Sonst würde die Bedienung mit der Maus nicht funktionieren.m_LastControl = m_CurControl; m_CurControl = GetFocus(); if(m_CurControl != m_LastControl) { CRect rcControl, rcParent; GetClientRect(&rcParent); m_CurControl->GetWindowRect(rcControl); ScreenToClient(&rcControl); CPoint ptScrollPosition = GetScrollPosition(); CPoint ptNewScrollPosition = ptScrollPosition; CSize sOffset = CSize(20,20); if (rcControl.left < rcParent.left) { ptNewScrollPosition.x += rcControl.left-rcParent.left - sOffset.cx; } else if (rcControl.right > rcParent.right) { ptNewScrollPosition.x += rcControl.right-rcParent.right + sOffset.cx; } if (rcControl.top < rcParent.top) { ptNewScrollPosition.y += rcControl.top-rcParent.top + sOffset.cy; } else if (rcControl.bottom > rcParent.bottom) { ptNewScrollPosition.y += rcControl.bottom-rcParent.bottom + sOffset.cy; } rcControl.OffsetRect(ptScrollPosition-ptNewScrollPosition); if (rcControl.left < 0) { ptNewScrollPosition.x += rcControl.left; } if (rcControl.top < 0) { ptNewScrollPosition.y += rcControl.top; } if (ptScrollPosition!=ptNewScrollPosition) { ScrollToPosition(ptNewScrollPosition); } }Nun zum Problem, die Bedienung mit der Tastatur funktioniert einwandfrei, nur bei der Bedienung mit der Maus gibt gibt es Probleme.
Wie bereits erwähnt habe ich dynamische Controls, das letze Control ist ein Button.
Durch das Klicken auf den Buttton wird ein Dialog geöffnet. Dieser Dialog ist breiter, als die Standrdgröße des Hauptfensters, wenn es minimiert ist.Öffnet sich der Dialog, dann verschiebt sich der Fensterinhalt meines Hauptfensters nach links.
Beim Start der Anwendung hat das TabControl den Focus und genau um die Größe dieses Reiters wird der Inhalt nach links geschoben, auch wenn ich den Focus mit der Tab-Taste auf ein anderes Control setze (z. B. den Button auf den ich klicke.Und was noch seltsamer ist, ist dass sich der Inhalt des Hauptfensters noch mehr nach links verschiebt, wenn ich mit der Tab-Taste durch die
Controls des Dialogs navigiere. Ich habe auch keine Scrollbar in meinem Dialog, wie CChris das hat.Danke und Lg
Kerberos
-
Hi,
weiß wirklich keiner wie ich den Fehler beheben kann? Ich will ja nicht aufdränglich sein, aber ich komm an dieser stelle einfach nicht weiter... ist wahrscheinlich nur 'ne Kleinigkeit. Durch Debuggen komm ich auch nicht weiter und ich weiß auch nicht wonach ich mit google oder hier im Forum suchen soll.
Danke und Lg
Kerberos
-
Du solltest das Rollen natürlich nur dann machen, wenn das Fenster, dass den Focus hat auch zu Deinem Dialog gehört oder. Was macht es bitte für einen Sinn, ein beliebiges Control, dass den Focus hat zur Basis Deiner Berechnung zu nutzen.
Zudem kann m_CurControl NULL werden! Und ich sehe nicht, dass Du Dir m_CurControl auch wirklich merkst!Also:
if (m_CurControl!=NULL && IsChild(m_curControl) && m_CurControl!=m_LastControl) {
-
--
-
Kerberos CChris 
Wer nun?
-
looooool, so einen Zufall hab ich ja noch nie erlebt.
( Hallo CChris
)Bin heute nicht im Praktum beim Arbeiten, sondern am stationären PC zuhause, wo ich schon länger nicht mehr war. Dachte eigentlich, ich wäre da noch eingeloggt.
Hab meinen Bruder, der sich wohl als CChris hier registriert hat (Chris passt vom Namen her und dass ein Login-Fehler durch die Boardsoftware aufgetreten ist, kann ich mir nicht vorstellen), nach einer Lösung für das Problem gefragt weil der sich auch mit der MFC beschäftigt hat.
Also entweder interessiert es ihn wirklich, oder er wollte nur so dar stehen als hätte "er" eine Lösung fürs Problem gefunden.... kommt ja heute abend auf

... Sachen gibt es ... unglaublich.
lg Kerberos