Hauptfenster verschieben



  • Hallo,

    Ich habe eine kurze Frage,
    Ich muss das Hauptfenster in der Größe verändern,
    kann man das eleganter lösen als per Ermittlung der aktuellen Position + rahmen usw.?

    Das habe ich bisher und es funktioniert:

    LRESULT CMainFrame::SetMaxHeight(WPARAM wParam, LPARAM lParam)
    {
        m_iMinY = static_cast<int>(wParam);
        WINDOWPLACEMENT wplm = { 0 };
        this->GetWindowPlacement(&wplm);
        this->MoveWindow(wplm.rcNormalPosition.left,
    		wplm.rcNormalPosition.top + GetSystemMetrics(SM_CYMENU) + GetSystemMetrics(SM_CYFRAME) + 2,
    		SIZE_DEFAULT_X,
    		m_iMinY);
        return 0;
    }
    

    Währe klasse wenn ich direkt die Top und Left Positionen abfragen kann mit den Rahmen, als es aufwändig zu ermitteln.



  • Wann soll denn die Größe geändert werden ? Nur einmal beim Start oder zwischendurch?

    Für den Start habe ich folgende Lösung:

    BOOL CMainFrame::PreCreateWindow(CREATESTRUCT& cs)
    {
    	if( !CMDIFrameWnd::PreCreateWindow(cs) )
    		return FALSE;
    
            //hier die Groesse des Hauptfensters
    	cs.cx = 640;
    	cs.cy = 480;
            //für das maximieren theApp.m_nCmdShow = SW_SHOWMAXIMIZED;
            //wird in CWinApp::InitInstance() mit ShowWindow(m_nCmdShow) aufgerufen
    
    	cs.style = WS_OVERLAPPED | WS_CAPTION | FWS_ADDTOTITLE
    		| WS_THICKFRAME | WS_SYSMENU | WS_MINIMIZEBOX | WS_MAXIMIZEBOX | WS_MAXIMIZE;
    
    	return TRUE;
    }
    


  • int Breite = 200;
    int Hoehe = 200;
    CRect fenster;
    GetWindowRect(&fenster);
    SetWindowPos(&CWnd::wndTop, fenster.x, fenster.y, Breite, Hoehe, SWP_SHOWWINDOW);
    

    Kann sein das ich x, y, Breite und Hoehe vertauscht hab


Anmelden zum Antworten