Dialog zur Laufzeit mehrere Steuerelemente hinzufügen



  • Hallo,
    ich habe gestern schon eine Frage gestellt und leider hat mir keiner geantwortet. Vielleicht lag es an der Überschrift und an einer schlechten Beschreibung des Problems, ich versuche es also noch einmal.

    Ich habe einen Dialog, den ich in zwei Teile aufgeteilt habe. Auf der Linken Seite ein Paar Buttons und rechts einen freien Platz. Ich möchte jetzt, das rechts, je nachdem welcher Button gedrückt wurde der Dialog anders aussieht. Ich hatte gedacht, das ich je nachdem welcher Button gedrückt wurde in der rechten Hälfte einen anderen Dialog ohne Rahmen anzeige. Das klappt auch, wenn ich jetzt aber den Hauptdialog verschiebe bleibt der andere Dialog an der alten stellen :-(. Eigentlich soll es ja so aussehen, als wenn es "ein" Dialog wäre. Kann auch sein das man so was anders macht. Ich bin für jeden Vorschlag dankbar

    Vielleicht hilft ja diese Beschreibung weiter.

    Grisu



  • Ich hoffe mal ich lieg jetzt richtig wenn ich einfach mal darauf tippe das du den zweiten dialog falsch erstellts. Du must beim Aufruf von Create einen Zeiger auf das ParentWnd angeben. Versuchs einfach mal so:

    m_pDialog2 = new CDialog2;
    	m_pDialog2 ->Create(MAKEINTRESOURCE(IDD_DIALOG2),this);
    	m_pDialog2 ->SetWindowPos... //hier die genaue Position festlegen
    	m_pDialog2 ->ShowWindow(SW_SHOW);
    


  • Also, ich habe das mal ausprobiert, aber es funktionert auch nicht, wenn ich bei create this übergebe.

    Wenn ich jetzt den Hauptdialog verschiebe bleibt der Dialog den ich erzeugt habe immer noch an der alten stelle. Muss ich vielleicht noch was bei den Eigenschaften des Dialogs ändern?

    m_dlg.Create(MAKEINTRESOURCE(IDD_DIALOG1),this);
    	CRect rect;
    	m_field.GetWindowRect(&rect);
    	int width=rect.right-rect.left;
    	int height=rect.bottom-rect.top;
    	m_field.SetWindowPos(&wndTop, rect.left, rect.top,width ,height ,SWP_SHOWWINDOW);
    	m_dlg.ShowWindow(SW_SHOW);
    


  • ScreenToClient(&rect);
    m_dlg.MoveWindow(rect);
    


  • C-O-M-M-A-N-D-E-R schrieb:

    ScreenToClient(&rect);
    m_dlg.MoveWindow(rect);
    

    Bloß nicht!!!

    Wenn der eingebettete Dialog ein Child vom umgebenden Dialog ist, wird er automatisch mit verschoben.

    Im Dialogeditor muss auch noch als Style des Dialoges "Child" angegeben werden, und damit man mit der Tabtaste durch die Elemente laufen kann auch noch unter "More Styles" "Control" anwählen.

    Beim umgebenden Dialog sollte man auch noch unter "Extended Styles" den Stil "Control Parent" auswählen.

    (Habe ein englisches VisualStudio, die Stellen sollten aber auch im deutschen zu finden sein.


Anmelden zum Antworten