Nicht-modalen Dialog zentrieren?



  • Wie zentriere ich einen nicht-modalen Dialog? Ich habe ein Hauptprogramm, aus welchem ich einen nicht-modalen Dialog folgendermaßen aufrufe:

    CMyDlg *pDlg;
    pDlg = new CMyDlg();
    if (pDlg != NULL) {
    	bool bDlg = pDlg->Create(IDD_DIALOG, this);
    	pDlg->ShowWindow(SW_SHOW);
    }
    // ...
    delete pDlg;
    

    Das funktioniert auch wunderbar, nur leider positioniert sich dieser Dialog genau in der linken oberen Ecke (unter der Titelleiste) des Hauptdialogs. Ich habe mir bereits CDialog::SetWindowPos() angesehen, werde aber nicht so recht schlau daraus. Danke!

    zony



  • Moin, moin,

    also meiner Meinung nach kann man das im Ressourcen Editor in den Eigenschaften des Dialogfeldes einstellen. Da gibt es eine Option "Zentriert", die auf "True" setzten... -> passt!

    PS.: die beiden Einstellungen darüber dürften dein bisheriges "links-oben" Problemchen erklären...

    mfg



  • Servus,

    ganz einfach. Eine Möglichkeit ist im Resource Editor diesen Dialog mit der ID auszuwählen und dann die Eigenschaft "Center" auf True setzt.

    *winke*
    Hellsgore



  • Oh mann, wie dämlich von mir. Vielen Dank!! 🙂

    zony



  • zony schrieb:

    CMyDlg *pDlg;
    pDlg = new CMyDlg();
    if (pDlg != NULL) {
    	bool bDlg = pDlg->Create(IDD_DIALOG, this);
    	pDlg->ShowWindow(SW_SHOW);
    }
    // ...
    delete pDlg;
    

    Du kannst auch im Programm nach der Zeile

    pDlg->ShowWindow(SW_SHOW);
    

    mit

    pDlg->CenterWindow();
    

    den Dialog zentrieren!

    VG sachse98


Anmelden zum Antworten