tutorials.de Buch-Aktion 05/2012
ERLEDIGT
NEIN
ANTWORTEN
2
ZUGRIFFE
713
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    VoidPointer VoidPointer ist offline Grünschnabel
    Registriert seit
    Nov 2008
    Beiträge
    4
    Hallo zusammen,

    ich habe folgende Frage. Ich habe ein SDI Projekt mit einer Ableitung von CFormView und auf diesem erstellten Basis Dialog befindet sich eine Group Box. In dieser Box soll auf Knopfdruck ein Dialog mit weitern Buttons erscheinen.

    Ich habe folgendes mal zu Test zwecken in die OnInitialUpdate() eingetragen:

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    
                 CWnd *pMovieCtrlFrame = GetDlgItem(IDC_MOVIE_CTRL_FRAME); // Group Box
        CRect rMovieFrame;
        pMovieCtrlFrame->GetClientRect(&rMovieFrame);
     
        int nX, nY, nXz, nYz;
        nX = rMovieFrame.left;
        nY = rMovieFrame.bottom+1; 
        
        CMovieCtrl MovieCtrl; // DIALOG mit weiteren Buttons
        MovieCtrl.Create(IDD_MOVIE_CTRL, GetParent());
        MovieCtrl.SetWindowPos( GetParent(), nX, nY, nX, nY, SWP_SHOWWINDOW );
        MovieCtrl.ShowWindow(SW_SHOW);

    Leider wird der Dialog beim starten nicht angezeigt. Kann mir vielleicht jemand einen Tip geben wie ich diesen Dialog in der Group Box Sichtbar machen kann?

    Gruß

    Void
     

  2. #2
    Avatar von jokey2
    jokey2 jokey2 ist offline Mitglied Smaragd
    Registriert seit
    Nov 2004
    Beiträge
    1.235
    Ich würde Dir vorschlagen, die Buttons fest zu erstellen und nur bei Bedarf anzuzeigen.

    Außerdem hast Du vergessen, Breite und Höhe zu setzen. Wenn du den Dialog bei 0,0 anzeigst, hat er auch die Breite und Höhe 0.
    Da kommen wir der Sache auch schon näher: Du ermittelst die Koordinaten der Groupbox mit GetClientRect. Das zurückgelieferte Rechteck liegt immer bei 0,0, die Funktion gibt Dir nur Breite und Höhe. Du mußt das noch in die Clientkoordinaten Deines Hauptfensters umrechnen.
    Dazu mußt du sie erst mit
    Code :
    1
    
    MovieCtrl.ClientToScreen(&rMovieFrame)
    in Bildschirmkoordinaten umrechnen und dann mit
    Code :
    1
    
    ScreenToClient(&rMovieFrame)
    in Clientkoordinaten Deines Hauptfensters umrechnen.
    Danach natürlich nicht vergessen, nXz und nYz zu setzen und auch beim Aufruf von SetWindowPos mit anzugeben.

    Der einfachere Weg (außer dem ganz oben) wäre allerdings, Du kennst die Koordinaten Deiner GroupBox im Hauptfenster (ACHTUNG: nicht identisch mit den Koordinaten im Dialogeditor). Da sich die Position und Größe der Groupbox im Hauptfenster wahrscheinlich nicht ändert, kannst Du sie auch fest (als Konstanten) setzen.
     

  3. #3
    dajaly Tutorials.de Gastzugang
    Hallo,

    wahrscheinlich ist das Problem nicht mehr relevant, suche gerade selbst und bin auf eine sehr vernünftige Lösung gestoßen

    http://www.codeproject.com/KB/dialog...eGroupBox.aspx
     

Ähnliche Themen

  1. modalen Dialog im Vordergrund anzeigen
    Von sinamine im Forum .NET Windows Forms
    Antworten: 7
    Letzter Beitrag: 25.03.08, 14:45
  2. Dialog anzeigen
    Von Fat-Z im Forum VisualStudio & MFC
    Antworten: 6
    Letzter Beitrag: 29.12.06, 20:37
  3. toolbar buttons die den dialog anzeigen
    Von defenderH2O im Forum Java
    Antworten: 2
    Letzter Beitrag: 31.03.06, 16:25
  4. s/w Bitmap in Dialog anzeigen
    Von Ron-E im Forum VisualStudio & MFC
    Antworten: 2
    Letzter Beitrag: 13.09.05, 15:57
  5. Dialog ausserhalb des mainfenstert anzeigen
    Von ArmerIrrer im Forum VisualStudio & MFC
    Antworten: 2
    Letzter Beitrag: 20.03.05, 21:35