Ada: Grafische Ausgabe eines Programms übermalen

Hallo,

ich möchte gerne in einer Windows-Forms-Anwendung die Ausgabe eines Programms X mit eigener Grafik kombinieren. Momentan sieht das so aus, daß ich Programm X (auf dessen Interna ich keinen Zugriff habe und nur als Black Box behandeln kann) das Window Handle eines Fensters mitteilen kann, in das es dann seine Ausgabe malt. Zu dieser Ausgabe würde ich gerne noch ein paar grafische Elemente hinzufügen. Als eine teilweise bedruckte Folie obendrauf, sozusagen.

Ich habe (quasi als mein erstes "Hello World" mit Windows Forms) mit VC++ ein Programm in Visual Studio zusammenstümpert, das ein leeres Fenster erzeugt und in dieses ein paar Linien und Kreise malt. Das läuft. Im nächsten Schritt ermittle ich das Window Handle dieses Fensters und übermittle es dem Programm X. Programm X malt nun auch fleißig mehrere Male pro Sekunde seine Ausgabe in dieses Fenster. Das Problem ist, daß das, was ich in der onPaint-Methode meines Fensters male, sofort von Programm X überschrieben wird.

Ich müßte, wenn Programm X malt, diese Ausgabe _jedes Mal_ mit meinen Verzierungen versehen, habe aber keine Ahnung, wie ich das hinbekomme. Mir ist nicht ganz klar, wie der Mechanismus hinter den Kulissen genau läuft, damit Programm X in mein Fenster malen kann. Mehr als das Setzen des Window Handles ist in dessen Dokumentation dazu auch nicht zu finden. Deshalb weiß ich nicht so recht, wo ich ansetzen soll. Mehr als die onPaint-Methode meines Fensters scheint ja für das Malen nicht zur Verfügung zu stehen, oder?

Grüße
Ada

  1. Hallo,

    ... sofort von Programm X überschrieben wird.

    Mit Überschreiben meinst du, dass die graphischen Elemente des anderen Programms verschwinden? Also Programm X keine "durchsichtige", sondern eine "weisse" Folie beschreibt?

    Ich kenne deine Programme nicht, aber suche mal in zwei Richtungen:

    1. Hat Programm X den gewünschten transparenten Hintergrund?
    2. Kopiert vielleicht Programm X sein Maling aus eigenem Speicher in den Anzeigebereich und weiss nichts davon, dass dort etwas stehen bleiben soll?

    Kannst du den vorhandenen Anzeigebereich nach Programm X kopieren und erst dann übermalen?

    Gruß, Kalle