tutorials.de Buch-Aktion 02/2012
ERLEDIGT
JA
ANTWORTEN
4
ZUGRIFFE
815
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Drache2 Drache2 ist offline Mitglied Gold
    Registriert seit
    Mar 2007
    Beiträge
    106
    So.
    Und schon das nächste Problem.

    Will nun ein paar kleinere Toolfenster in einem Fremworkelement docken UND wenn der Mauszeiger nicht auf denen ist, sollen diese SAMT RAHMEN transparent werden (bzw. halbdurchsichtig).

    Nun stoße ich jedoch an meine Grenzen in WPF.

    Das Docken bekomme ich imoment nur zum gesamten Hauptfenster hin, ein Anfang, aber nicht mein Ziel und auch sehr unschöner Code (instabil¿).

    Code den ich als Funktion aufriufe
    Code :
    1
    2
    3
    
    Helfer.Fenster_Docken.SetParent(
                            new System.Windows.Interop.WindowInteropHelper(this.linienlistefenster).Handle,
                            new System.Windows.Interop.WindowInteropHelper((Window)((Grid)this.Parent).Parent).Handle);

    Code hinter der SetParent-Funktion (Modifizierter und gekürzter Code aus dem Internet, aber funktionsfähig)
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    
            [DllImport("user32.dll", CharSet = CharSet.Auto)]
            public static extern IntPtr
            FindWindow([MarshalAs(UnmanagedType.LPTStr)] string lpClassName,
            [MarshalAs(UnmanagedType.LPTStr)] string lpWindowName);
     
            [DllImport("user32.dll")]
            public static extern IntPtr SetParent(IntPtr hWndChild, IntPtr hWndNewParent);
     
            /// <summary>
            /// Einzelnes Form auf den Desktop Festkleben
            /// </summary>
            /// <param name="formToDock">Formular, dass an den Desktop gedockt werden soll</param>
            public void StartDocking(Window formToDock, IntPtr Parent)
            {
                IntPtr hwndParent = FindWindow("progman", null);
                SetParent(new WindowInteropHelper(formToDock).Handle, hwndParent);
            }

    Das wäre der eine Teil.

    Das mit der Transparenz haut dem ganzen jedoch den Boden aus dem Fass.
    Einerseits mag WPF das anscheinend nur wenn ich AllowTransparency auf true stelle.
    Im Hauptfenster kein problem, da das eh keinen Rahmen hat.
    Im Toolfenster jedoch ein Problem, da das seinen Rahmen behalten soll.
    Zudem verschwindet das Toolfenster sofort nach dem Öffnen.
    Wenn ich jedoch AllowTransparency im Hauptfenster auf false stelle, bleibt es da, wird aber auch nur grau abgestuft.

    Wenn wer nicht weiß wie ich das meine, Paint.Net ist dazu das beste Beispiel.
    Hoffe es weiß mal wieder wer Rat

    Gruß Drache2
     
    ;::::;

  2. #2
    Avatar von Shakie
    Shakie Shakie ist offline Mitglied Diamant
    Registriert seit
    May 2004
    Ort
    Europa
    Beiträge
    2.002
    Du könntest den Rahmen im Toolfenster selber zeichen. Hier gibt es ein Beispiel.
     

  3. #3
    Drache2 Drache2 ist offline Mitglied Gold
    Registriert seit
    Mar 2007
    Beiträge
    106
    Ja, gut, das löst schonmal ein Problem Dankeschön
    Dennoch verschwindet das Fenster, bzw. es taucht nicht einmal auf, wenn ich es auf das Hauptfenster docke (zudem muss es doch eine bessere Methode dafür geben. Irgentwie mit AddChild bzw Set Parent?, Muss allerdings für ein FrameworkElement benutzbar sein, notfalls auch für ein UserControl, aber lieber Frameworkelement)
     
    ;::::;

  4. #4
    Avatar von Shakie
    Shakie Shakie ist offline Mitglied Diamant
    Registriert seit
    May 2004
    Ort
    Europa
    Beiträge
    2.002
    Kennst du die DockPanel Suite? Damit kannst du Forms in andere docken. Vielleicht findest du im (recht langen) Quellcode eine Idee wie es dort gemacht wird; ist allerdings für WinForms und nicht WPF.
     

  5. #5
    Drache2 Drache2 ist offline Mitglied Gold
    Registriert seit
    Mar 2007
    Beiträge
    106
    Hmm, nein, habs mir mla angeguckt, aber nur gesehen, dass se mit dem Dockpanel arbeiten.

    Hab's jetzt auch anders gelöst.
    Hab mir nen Fenster als UserControl geschrieben.
    Mit Rahmen (schlicht, aber das ist egal)
    Musste zwa alles selber schreiben, aber es funktioniert wenigstens
    Den Code stelle ich vielleicht mal online wenn ich den weiter ausgebaut habe und zudem verallgemeinert.
    Trotzdem vielen Dank

    //EDIT:
    So. habe den Ciode jetzt mal als Anhang hochgeladen.
    Ein "einfaches" Usercontrol mit Rahmen,, Titel und Schließenbutton.
    Verschiebbar und größenveränderbar
    Keinerlei besonderheiten sonst.
    Darf jeder als Vorlage oder so wie es ist benutzen.
    Angehängte Dateien Angehängte Dateien
    Geändert von Drache2 (26.08.10 um 17:00 Uhr) Grund: Anhang angefügt
     
    ;::::;

Ähnliche Themen

  1. Transparente Fenster
    Von zer0 im Forum Swing, Java2D/3D, SWT, JFace
    Antworten: 3
    Letzter Beitrag: 17.11.10, 08:01
  2. Alle Fenster "docken"
    Von Eiszwerg im Forum Microsoft Windows
    Antworten: 0
    Letzter Beitrag: 27.06.07, 15:59
  3. Screenshot ignoriert transparente Fenster
    Von powerloop im Forum C/C++
    Antworten: 0
    Letzter Beitrag: 07.06.07, 00:34
  4. Transparente Fenster
    Von CosmoKey im Forum Java
    Antworten: 2
    Letzter Beitrag: 11.11.03, 11:47
  5. Transparente Fenster
    Von CosmoKey im Forum Swing, Java2D/3D, SWT, JFace
    Antworten: 1
    Letzter Beitrag: 14.10.03, 17:41