API plain Scrollfenster

Thomasio

Erfahrenes Mitglied
Was mir fehlt ist die Grundidee, wie so etwas überhaupt machbar ist

Bis jetzt habe ich in meiner Anwendung ein kleines child window 100x200px
Da hinein soll nun variabler Inhalt, Grafik und Text gemischt, von mir aus alles in weitere child windows

Dieser Inhalt wird in der Breite fixiert, nur in der Höhe variabel, er soll statisch sein, so lange die Höhe des Inhalt kleiner ist als die Höhe des Fensters und automatisch anfangen den Inhalt als infinite Loop durchzuscrollen, sobald der Inhalt höher wird als das Fenster, sprich, was oben raus läuft, soll von unten wieder auftauchen

Kann mir jemand einen Lösungsansatz geben, wie das machbar wäre?
 
Hallo,

du könntest die Inhaltselemente timergesteuert verschieben und bei Verlassen des sichtbaren Bereichen wieder am unteren Ende positionieren (mit MoveWindow).

Gruß
MCoder
 
Ja, so ähnlich war auch meine erste Idee, Timergesteuert wird es sowieso sein müssen, aber ich habe schon wenn ich nur dran denke (ohne dass ich es bisher probiert hätte) diverse Probleme vor Augen

1) Jedesmal wenn sich der Inhalt in der Länge ändert muss ich an der Scroll Funktion basteln und die Werte ändern, praktischer wäre eine Scrollfunktion, die selbstständig die Höhe des Inhalt berechnet und sich automatisch anpasst, bzw. den Scroll abschaltet, wenn der Inhalt zu kurz wird, so dass ich on the fly den Inhalt ändern kann ohne mich weiter um die Scrollfunktion zu kümmern
2) MoveWindow() kann den Inhalt eines Fensters nicht teilen, wenn also eine relativ hohe Grafik da ist, und der Gesamtinhalt nur wenig länger als das Fenster, dann muss die Grafik zuerst oben ganz verschwunden sein, bevor sie von unten wieder auftauchen kann
(könnte man evtl einfach n bischen leeren Platz einfügen)
3) Wie verschiebe ich ein Fenster über den oberen Rand des parent? Negative Werte für MoveWindow() sind ja wohl nicht drin, oder?
 
Hallo,

1) Du kannst die Scrollfunktion schon entsprechend automatisieren. Sie kann sich ja selber alle Controls holen (EnumChildWindows) und bei jedem Timerdurchlauf ausgehend von der aktuellen Scrollposition des obersten Element alles nach unten neu kalkulieren.

2) In der Situation zeigt du halt das Element unten ein zweites Mal an, um ein geteiltes Element zu suggerieren.

3) Doch, du kannst mit negativen Werten arbeiten.

Alles in allem ein recht komplexer Job, den du dir da vorgenommen hast ;-)

//Nachtrag: Es geht wohl noch etwas einfacher: Packe alle Controls auf ein einfaches rahmenlosen Fenster, das so hoch ist, dass alle Controls draufpassen und füge dieses Fenster in dein Child Window ein. Dann brauchst du nur ein einzelnes Element zu scrollen, was die Sache doch sehr viel übersichtlicher mochen sollte.


Gruß
MCoder
 
Zuletzt bearbeitet:
Zurück