Hallo!
1000 Sorry für den bescheuerten Titel und falls das Thema schonmal irgendwo gewesen sein sollte, aber ich weiß leider nicht, wonach ich noch suchen soll.
Situation:
Maximiertes Form mit einer Scrollbox, deren Inhalt viel größer ist als der Bildschirm, also scrollen kann.
Ich starte nun ein zweites Programm von mir, wobei ich mit Hilfe von Parametern Werte übergeben, wie das
Handle der Scrollbox, sowie späteres Top, Left, Height, Width des Bereiches, in dem sich dieses 2te Programm platzieren soll.
Hilfe: Stellt Euch eine Website vor, auf der ein Video platziert wird. Mein 2tes Programm ist dieses Video.
Warum eine extra .exe Datei? Ich mache die Anbindung vom Video über
OLE. Da ggf. Ladezeiten etc. mein "Hauptprogramm" stoppen könnten, mache ich eine extra .exe Datei (auch wegen Fehlerbehandlung und ich kann jederzeit eine Unterstützung für neue Formate hinzufügen, ohne dass ich das Hauptprogramm ändern muss; dies sollte jetzt nicht Treadthema werden ob sinnvoll oder nicht, thx
)
Dieser "Bereich" ist der maximale Bereich, indem sich das "Video" ausbreiten darf. Da bei einem quadratischem Bereich mit einem 4:3 Video das Quadrad nicht voll ausgefüllt werden würde, soll dich also das Form der 2ten Anwendung entsprechend eigenen Berechnungen automatisch anpassen dürfen.
Hilfe: Stellt Euch vor der Zielbereich ist quadratisch und Ihr habt je ein Video in dem Format 4:3, 16:9 und 1:1. Euer Form aus der 2ten .exe Datei ist rot. Bei dem 1:1 Video kein Problem: Das Rot ist nicht zu sehen. Bei 4:3 und 16:9 sieht man allerdings oben und unten rote Steifen. Das 2te Programm korrigiert nun bei jedem Videowechsel seine Höhe entsprechend dem Videoformat. Nun sind nie rote Streifen zu sehen.
Das Problem:
Angenommen der "Bereich" hat Top=0. Nun Scrolle ich um 500px nach unten. Das Video "springt" immer wieder in den sichtbaren Bereich (Form2 hat einen Timer, der immer wieder Top = 0 aufruft), obwohl der Bereich garnicht zu sehen sein sollte. Form2 orientiert sich scheinbar also an Form1, und nicht an der Scrollbox, welche aber das Parentwindow ist!
Wenn ich nun im Hauptprogramm an die Stelle des "Bereichs" ein Panel setze und das Form aus der 2ten Anwendung als Child dieses Panel mache (maximiert), dann funktioniert zwar das scrollen, allerdings kann ich dann nicht mehr vergrößern/verkleinern. Einerseits, wenn ich das Form auf ws_Normal setze und Top, Left etc korrigiere kann ich es nicht mehr finden (das kleinere Problem), andererseits, und das ist der wichtige Punkt: Das 2te Form könnte sich zwar an das Video anpassen, allerdings ist das Panel des Hauptprogrammes immernoch quadratisch. Transparent etc. für das Panel funktioniert nicht (darunter liegt
OpenGL ).
Ausserdem wird das Form2, jedes mal, wenn ich Top auf 0 setze, um 4px nach links geschoben. Warum das?
Ich hoffe, das Problem ist klar geworden. Für irgendwelche Tips und Anregungen wäre ich sehr dankbar!