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