Fenster in anderes Fenster einbinden





  • Hallo,
    ich glaube ihr habt mich falsch verstanden. Ich will ein Fenster z.B. Form2 (oder auch ein fremdes Fenster z.B. von Notepad) in ein anderes Fenster (wie z.B. Form1) einbinden.

    Das fremde Fenster soll sich dann innerhalb des Form1-Fensters befinden. Es soll mehr oder weniger darin eingeschlossen sein.

    Hier ist eine Beispielgrafik:
    - http://s195130324.online.de/fenster.gif

    Wie gesagt, mit der SetParent-API ist so etwas recht einfach zu lösen. Aber gibt es für dieses Problem auch eine .NET-Klasse ?

    Danke für eure Hilfe,
    mfg arena_blau

    ---------------------------



  • Mach doch ein MDI Fenster, da kannst alles rein.



  • Hallo,
    MDI-Fenster sind für meine Zwecke eher ungeeignet. Es hilft wohl alles nichts, vermutlich muss ich die API verwenden.

    Kann mir von euch jemand sagen, wie ich ein Handle in einer Klasse speichern kann, so dass es global verfügbar ist ?

    Ich habe es so versucht:

    static HWND handle_fenster_x;
    

    Das funktioniert bei int-, double- oder sonstigen Variablen auch ganz gut. Nur bei HWND meckert der Compiler. Könnt ihr mir da weiterhelfen ?

    Danke,
    mfg arena_blau

    -------------------------------------



  • Warum willst du das überhaupt machen? wenn man mal so fragen darf...

    EDIT:

    #include <windows.h>
    


  • Hallo,
    das includen von <windows.h> funktioniert. Naja, eigentlich hätte ich auch selbst drauf kommen müssen :).

    Warum willst du das überhaupt machen? wenn man mal so fragen darf...

    Ich habe in einem anderen Beitrag gefragt, wie ich auf Events in einem OpenGL-Fenster reagieren kann:
    - http://www.c-plusplus.net/forum/viewtopic-var-t-is-244292.html

    Es konnte mir aber keiner eine Antwort geben. Deshalb will ich jetzt einfach eine unsichtbare Form über das OpenGL-Fenster legen. So kann ich auch auf Events reagieren.

    Das ist jetzt vielleicht keine besonders saubere Lösung, aber was besseres fällt mir im Augenblick nicht ein.

    Wisst ihr vielleicht ne bessere Lösung ?

    Danke,
    mfg arena_blau

    -------------------------



  • ich hab mit OGL nicht soviel am Hut, aber braucht OGL nicht ein Fenster zur Ausgabe??

    Mit diesem Fenster kannst doch auch auf Klicks usw. Reagieren....



  • Hallo,
    OpenGL braucht ein Fenster zur Ausgabe, das ist richtig. Dieses Fenster habe ich auch schon erzeugt, nur weiss ich nicht genau wie ich darin ein Click-Event einfügen kann.

    Bisher konnte mir im Forum leider noch keiner zu dem Thema helfen.

    Danke,
    mfg arena_blau

    ------------------



  • Schon für .NET oder??

    wenn ja... Im Designer das Formular Fokusieren und bei den Eigenschaften oben den Button mit dem Blitz klicken, dann hast alle Ereignisse für das Fenster. Da suchst dir das Ereigniss "MouseDown" in der Kategorie "Maus" und klickst doppelt darauf. und schon wird die Methode für das Mausklick ereigniss erzeugt. Da kannst dann auch mte "e->X && e->Y" die Koordinaten abfragen.

    Wenn dir das weiterhilft...



  • Hallo,
    wie man bei normalen .NET-Fenstern Events einbindet, das weiss ich (ist mit der IDE ja recht einfach). Aber bei meinem Code wird das Fenster so erzeugt:

    public ref class COpenGL: public System::Windows::Forms::NativeWindow 
        { 
        public: 
            COpenGL(System::Windows::Forms::Form ^ parentForm, GLsizei iWidth, GLsizei iHeight) 
            { 
                CreateParams^ cp = gcnew CreateParams; 
    
                // Set the position on the form 
                cp->X = 148; 
                cp->Y = 46; 
                cp->Width = 1120;        // iWidth; 
                cp->Height = 704;        // iHeight; 
    
                // Specify the form as the parent. 
                cp->Parent = parentForm->Handle; 
    
                // Create as a child of the specified parent and make OpenGL compliant (no clipping) 
                cp->Style = WS_CHILD | WS_VISIBLE | WS_CLIPSIBLINGS | WS_CLIPCHILDREN; 
    
                // Create the actual window 
                this->CreateHandle(cp); 
    
                m_hDC = GetDC((HWND)this->Handle.ToPointer()); 
    
                if(m_hDC) 
                { 
                    MySetPixelFormat(m_hDC); 
                    ReSizeGLScene(iWidth, iHeight); 
                    InitGL(); 
                } 
            }
    

    ...

    Form1(void) 
    { 
        InitializeComponent(); 
    
        OpenGL = gcnew COpenGL(this, 1120, 704); 
    }
    

    ...

    private: 
        /// <summary> 
        /// Erforderliche Designervariable. 
        /// </summary> 
        OpenGLForm::COpenGL ^ OpenGL;
    

    Und in diesen Code (den ich von http://www.codeproject.com/KB/miscctrl/OpenGLViewWinForms.aspx habe), möchte ich nun ein Event einfügen, so dass ich z.B. auf Klickevents des Fensters (des OpenGL-Fensters) reagieren kann.

    Könnt ihr mir da weiterhelfen ?

    Danke,
    mfg arena_blau

    ----------------------------------------------



  • Hallo,
    kann mir denn keiner weiterhelfen ? Ich bin kurz vorm verzweifeln 😞 .

    Der Code des Fenster ist doch auch .NET, oder ?

    Versucht doch bitte mir weiterzuhelfen. Wenn nötig, dann würde ich euch die Arbeit auch bezahlen.

    Danke,
    mfg arena_blau

    -------------------



  • Schau doch mal in den InitializeComponent Code wie dort die Events angehängt werden.



  • arena_blau schrieb:

    Versucht doch bitte mir weiterzuhelfen. Wenn nötig, dann würde ich euch die Arbeit auch bezahlen.

    Weißt Du da eigentlich was Du da zusammenklatscht?
    Du kopierst Dir wild was aus dem Internet und wunderst Dich, dass nix klappt.
    Mich kannst Du eh nicht bezahlen.
    Kauf Dir lieber für das Geld ein Grundlagenbuch.

    Wie verzweifelt muss man eigentlich sein, für so ein Pippifax Geld bezahlen zu wollen. Tzzz...

    Gruß

    Heiner


Anmelden zum Antworten