Fenster an bestehendes Fenster binden?



  • Hallo, ich bin ganz neu hier im Forum und hoffe, dass diese Frage hier überhaupt reingehört.

    Kurz zu mir:
    ich habe C/C++ schon seit Jahren nicht mehr benutzt und deshalb ist so ziemlich alles in Vergessenheit geraten. In letzter Zeit habe ich hauptsächlich in PHP, davor mit Java programmiert.

    Zu meiner Frage:
    Es gibt eine Windows-Anwendung in der mehrere Fenster erstellt werden und angeordnet werden können, wie man es kennt. Also vertikal, horizontal anordnen oder Vollbild und über Reiter kann man dann navigieren und einzelne Fenster hervorheben.

    Diese Anwendung gestattet es, eigene Plugins zu schreiben und einzubinden. Man kann auch externe DLLs einbinden und Funktionen daraus aufrufen. Leider ist die eigene Programmiersprache für die Plugins nicht sehr mächtig und deshalb will ich gern eine eigene DLL erstellen, die mir die Funktionalität bietet, die ich vermise.

    Ist es möglich, dass meine DLL ein Fenster erzeugt und sich an eines der Fenster der Anwendung heftet? Ich könnte der DLL-Funktion die ID des Fensters mitteilen (hWnd), an das es sich heften soll.

    Hier ein Bild davon, was ich meine:
    http://xs.to/image-075C_4BA1F3D9.jpg

    Der große rote Rahmen ist eines der Fenster, an das sich mein von der DLL erzeugtes Fenster (kleiner roter Rahmen, grauer Hintergrund) heften soll. Über den Reiter unten können die anderen Fenster ausgewählt werden. Klicke ich auf eines dieser Fenster, soll mein DLL-Fenster auch verschwinden und nur wieder auftauchen, wenn ich unten wieder das Fenster auswähle, an das es geheftet ist.

    Frage: geht das? Wenn ja: wie? 🙂
    Bin wirklich für jede Hilfe dankbar, da ich im moment nichtmal weiß, wonach ich suchen muss. Danke!


  • Mod

    Das hängt wohl davon ab, wie das andere System seine Fenster verwaltet.
    Schau Dir das mit Spy++ an.

    Wenn das große Fenster wirklich ein eigenes Fenster ist, könntest Du Dein Fenster als Child dieses Fensters erzeugen. Es würde dann über diesem Fenster liegen und verschwinden, wenn das Parent verschwindet.



  • Vielen Dank für die schnelle Antwort. Da ich Spy++ nicht habe, hab ich nach einer Alternative gesucht und WinSpy++ gefunden - ist das auch ok?

    Hier der Screenshot:

    http://xs.to/image-505D_4BA212CF.jpg

    Es geht also um die terminal.exe und dann insbesondere die SubWindows von "MDIClient".

    002D60656, gelb markiert, ist in diesem Fall das Handle, dass ich ansteuern könnte. Kann ich daran jetzt ein Fenster heften? Und wenn ja, wie? 🙂


  • Mod

    Das Handle ist jedesmal anders... 😉
    Du könntest es ermitteln und ein neues Fenster dann einfach mit diesem Handle als Parent und den Stil WS_CHILD erzeugen.
    Aber Du hast ja geschrieben, dass DLLsgeladen werden können und Du ein Handle von der Anwendung bekommen kannst.


Anmelden zum Antworten