Dialog in einder SDI Anwendung resizen



  • Hallo,

    ich versuch mich gerade mit SDI Anwendungen und da bin ich auf ein (für mich) kniffliges Problem gestossen. Ich habe in der View Klasse ein Dialog eingefügt.
    Den versuche ich zu vergrössern / verkleinern wenn sich das Hauptfenster verkleinert oder vergrössert. Doch das mit dem Dialogfeldresize will nicht so recht. Ich habe es (u.A.) so versucht (als ansatz):

    HWND dlgWnd = ::GetDlgItem(m_hWnd, IDD_DIALOG_MAIN);
    ::MoveWindow(dlgWnd, 1, 1, 100, 100, true);
    

    Das geht leider nicht. Wohl weil es ein Dialog ist, kein Dialog Item,..?
    Gibts da ne andere Funktion oder bin ich auch einem ganz faltschen Weg?



  • Das sollte sich normalerweise mittels SetWindowPos(...) bewerkstelligen lassen. Wenn du diese CWnd-Methode für dein Dialog-Objekt aufrufst, kannst du neben der Position auch die Größe festlegen.



  • Hi, mit SetWindowPos habe ich das gleiche problem. Damit bekomme ich nur den Clientbereich der SDI Anwendung vergrößert/verkleinert.



  • Wenn du die Controls mit anpassen willst, musst du das von Hand machen.
    Schau mal auf www.codeproject.com, da gibt es was, wo du abgucken kannst. 😉



  • nein, dass will ich ja eben nicht. Ich will einfach nur das Dialogfeld in CFormView resizen


  • Mod

    Du hast also einen eigenen View von CFormView abgeleitet?

    Dann bau Dir einen WM_SIZE Handler in diesen CFormView ein, dann kannst Du dort Deine Contrl umpositionieren.

    Der CFormView selbst in dem SDI wird automatisch angepasst, wenn Du den normalen Weg überein Document-Template verwendet hast.



  • oh.. ich habe einige wichtige Informationen vergessen. Also ich habe eine SDI Anwendung mit CFormView. In dieser Klasse habe ich ein Dialog IDD_DIALGO_IRGENDWAS. In OnSize() bekomm ich nur mit MoveWindow und SetWindowPos den ganzen Ansichtsberich versetzt, nicht aber den Dialog. Da finde ich einfach nicht den richtigen Weg... Zumal es von beiden Funktionen edliche ausführungen zu geben scheint..


Anmelden zum Antworten