eingebetete Dialog positionieren



  • Hallo allerseits,

    ich versuche einen neuen Dialog(IDD_VIEWER_DIALOG) in einem Textcontrol(IDC_SWAPPLACEDUMMYEDIT) des Hauptdialoges(IDD_ZR_DIALOG) zu öffnen.

    Funktionsinhalt:

    // mit pdlg = (CDialog*)&m_ViewerEdit
            CRect rc;
    
    	GetDlgItem(IDC_SWAPPLACEDUMMYEDIT)->GetWindowRect(&rc);
    	ScreenToClient(&rc);
    
    	p_dlg->Create(IDD_VIEWER_DIALOG, this);
    	p_dlg->ModifyStyleEx(0, WS_EX_CONTROLPARENT);
    	p_dlg->ModifyStyle(0, WS_TABSTOP);
    
    	p_dlg->SetWindowPos(NULL, rc.left, rc.top, 0, 0,
    					SWP_NOZORDER|SWP_NOSIZE|SWP_SHOWWINDOW);
    

    leider funktioniert die positionierung nich richtig, kann mir jemand sagen was da schief läuft?



  • Ich glaube, du hast Breite und Höhe auf 0 gesetzt.
    p_dlg->SetWindowPos(NULL, rc.left, rc.top, 0, 0,
    SWP_NOZORDER|SWP_NOSIZE|SWP_SHOWWINDOW);



  • danke, doch leider tut dies auch nicht:

    p_dlg->SetWindowPos(NULL, rc.left, rc.top, 315, 213,
    		SWP_NOZORDER|SWP_NOSIZE|SWP_SHOWWINDOW);
    

    zwar wird das IDD_VIEWER_DIALOG angezeigt aber als Popupfenster und nicht in dem IDC_SWAPPLACEDUMMYEDIT.


  • Mod

    Das Dialog Template muss den Stil WS_CHILD haben!

    Allerdings innerhalb eines Edit Control einen Dialog zu erzeugen kann zu diversen Anzeigeproblemen führen. Edit Controls sind nicht dafür gebaut Childs zu hosten.


Anmelden zum Antworten