Fenster maximieren/Größe ändern in VC++

Hallo Leute,

ich finde einfach nicht raus, wie ich Fenster per Code maximieren oder minimieren bzw. gleich maximiert starten kann. Außerdem wüsste ich noch gern, wie man die Größe von Fenster bzw. Steuerelementen per Code ändern kann.
Sollte eigentlich nicht zu schwierig sein, aber ich hab bis jetzt wiegesagt noch nix dazu gefunden.
Danke!
MacFrenzy

Hey,

das Maximiert-Starten müsste doch eigendlich mit der Änderung der Auflösung funktionieren, für das Ändern der Auflösung geht evt. ChangeDisplaySettings()(GDI) (nicht getestet).
Hoffe, ich konnte helfen,

Stephan

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Hallo Stephan,

ich will eigentlich nichts an der Bildschirmauflösung ändern, es soll einfach ein Dialogfenster von vorneherein, wenn es geöffnet wird, maximiert dargestellt werden. Außerdem möchte ich z. B. die Größe eines Eingabefeldes an die Fenstergröße anpassen, wenn der Nutzer die Größe des Fensters ändert.

MacFrenzy

Also, wenn du MFC verwendest:
Da gibt es eine Member-Funktion der Klassen CWnd und CWindow
->BOOL ShowWindow(int nCmdShow);
Übergeben kannst du die Werte:
SW_HIDE Hides this window and passes activation to another window.

SW_MINIMIZE Minimizes the window and activates the top-level window in the system’s list.

SW_RESTORE Activates and displays the window. If the window is minimized or maximized, Windows restores it to its original size and position.

SW_SHOW Activates the window and displays it in its current size and position.

SW_SHOWMAXIMIZED Activates the window and displays it as a maximized window.

SW_SHOWMINIMIZED Activates the window and displays it as an icon.

SW_SHOWMINNOACTIVE Displays the window as an icon. The window that is currently active remains active.

SW_SHOWNA Displays the window in its current state. The window that is currently active remains active.

SW_SHOWNOACTIVATE Displays the window in its most recent size and position. The window that is currently active remains active.

SW_SHOWNORMAL Activates and displays the window. If the window is minimized or maximized, Windows restores it to its original size and position.

(aus MSDN rauskopiert)

Dürfte soweit verständlich sein.

Wenn du MFC nicht verwendest:

Aus der Windows User Api

BOOL ShowWindow(
HWND hWnd, // handle to window
int nCmdShow // show state of window
);

Für int nCmdShow kannst du wieder die oben angegeben Konstanten übergeben:smile:

Ich hoffe ich konnte helfen!

MfG
DDR-RAM

Hallo DDR-RAM!
Vielen Dank für die ausführliche Antwort!
Wenn mir jetzt noch jemand sagen könnte, wie man die Größe und Position von Steuerelementen auf dem Fenster ändern kann, wäre ich 100% glücklich!
Danke!
MacFrenzy

So.
Wenn du es noch genauer willst:
in den MFC wieder in den Klassen CWnd und CWindow:

void MoveWindow(int x, int y, int nWidth, int nHeight, BOOL bRepaint = TRUE);

Ich glaube danach hast du gesucht:wink:
Und ich glaube auch, das die Argurmente/Parameter selbst erklärend sind, wenn nicht, kannst du ja nochmal fragen.

Im Windows User Interface gibt es diese Funktion:

BOOL MoveWindow(
HWND hWnd, // handle to window
int X, // horizontal position
int Y, // vertical position
int nWidth, // width
int nHeight, // height
BOOL bRepaint // repaint flag
);

Auch selbst erklärend(sogar noch mit Englischer Kurzbeschreibung^^)

MfG
DDR-RAM

Hallo,

überschreibe in der MainFrame-Klasse die Funktion PreCreateWindow:

BOOL CMainFrame::stuck_out_tongue:reCreateWindow(CREATESTRUCT& cs){
if( !CFrameWnd::stuck_out_tongue:reCreateWindow(cs) )
return FALSE;
// ZU ERLEDIGEN: Ändern Sie hier die Fensterklasse
//oder das Erscheinungsbild, indem Sie
// CREATESTRUCT cs modifizieren.
// neue Größe und Position setzen…
cs.x = 0;
cs.y = 0;
cs.cx = 1024;
cs.cy = 768;
return TRUE;
}

das funktioniert auch.

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]