SDI-FensterGröße



  • Hallo zusammen,
    könnte mir jemnad sagen wie ich die Größe eines Fenster in einer SDI-
    Anwendung ändern kann??

    Gruß



  • Bei SDI kannst Du doch nur das Main-Fenster ändern, oder? SetWindowPos?



  • Der SDI-Fall
    In einer SDI-Anwendung (Single Document Interface) stellt der Standard-Fensterstil in dem Gerüst eine Kombination der Stile WS_OVERLAPPEDWINDOW und FWS_ADDTOTITLE dar. FWS_ADDTOTITLE ist ein MFC-spezifischer Stil, der das Gerüst anweist, den Dokumenttitel zum Titel des Fensters hinzuzufügen. Zum Ändern der Fensterattribute in einer SDI-Anwendung setzen Sie die Funktion PreCreateWindow in Ihrer aus CFrameWnd abgeleiteten Klasse außer Kraft (die der Anwendungs-Assistent mit CMainFrame bezeichnet). Beispiel:

    BOOL CMainFrame::PreCreateWindow(CREATESTRUCT& cs) 
    { 
        // Erstellen eines Fensters ohne min-/max-Schaltflächen oder größenveränderbaren Rahmen 
        cs.style = WS_OVERLAPPED | WS_SYSMENU | WS_BORDER;
    
        // Verändern der Fenstergröße auf 1/3 der Bildschirmgröße und anschließendes Zentrieren 
        cs.cy = ::GetSystemMetrics(SM_CYSCREEN) / 3; 
        cs.cx = ::GetSystemMetrics(SM_CXSCREEN) / 3; 
        cs.y = ((cs.cy * 3) - cs.cy) / 2; 
        cs.x = ((cs.cx * 3) - cs.cx) / 2;
    
        // Aufruf der Basisklassenversion
        return CFrameWnd::PreCreateWindow(cs); 
    }
    

    Im CMainFrame unter PreCreateWindow:
    cs.cx und cs.cy geben deine Fenstergrösse an.
    cs.x und cs.y die Position ab oberer linker Ecke

    Edit estartu: Code-Tags nachgetragen


Anmelden zum Antworten