minimieren/maximieren

moin


Das machst du mit der Funktion:

BOOL ShowWindow( HWND hWnd, int nCmdShow);



Folgende Attribute gibt es laut MSDN:

SW_FORCEMINIMIZE
Windows 2000/XP: Minimizes a window, even if the thread that owns the window is hung. This flag should only be used when minimizing windows from a different thread.
SW_HIDE
Hides the window and activates another window.
SW_MAXIMIZE
Maximizes the specified window.
SW_MINIMIZE
Minimizes the specified window and activates the next top-level window in the Z order.
SW_RESTORE
Activates and displays the window. If the window is minimized or maximized, the system restores it to its original size and position. An application should specify this flag when restoring a minimized window.
SW_SHOW
Activates the window and displays it in its current size and position.
SW_SHOWDEFAULT
Sets the show state based on the SW_ value specified in the STARTUPINFO structure passed to the CreateProcess function by the program that started the application.
SW_SHOWMAXIMIZED
Activates the window and displays it as a maximized window.
SW_SHOWMINIMIZED
Activates the window and displays it as a minimized window.
SW_SHOWMINNOACTIVE
Displays the window as a minimized window. This value is similar to SW_SHOWMINIMIZED, except the window is not activated.
SW_SHOWNA
Displays the window in its current size and position. This value is similar to SW_SHOW, except the window is not activated.
SW_SHOWNOACTIVATE
Displays a window in its most recent size and position. This value is similar to SW_SHOWNORMAL, except the window is not actived.
SW_SHOWNORMAL
Activates and displays a window. If the window is minimized or maximized, the system restores it to its original size and position. An application should specify this flag when displaying the window for the first time.



Allerdings musst du dir zuerst ein Handle auf das Fenster besorgen.


mfg
umbrasaxum
 
moin


Du könntest z.B. mit SetConsoleTitle() deiner Console einen Titel geben.

und dann mit FindWindow() das HWND holen z.B.:
Code:
SetConsoleTitle("Test");

HWND hwnd = FindWindow(NULL, "Test");

ShowWindow(hwnd, SW_MAXIMIZE);



mfg
umbrasaxum
 
Zuletzt bearbeitet:
Maximieren:
WindowState = wsMaximized;

Verkleinern:
WindowState = wsNormal;

Minimieren:
SendMessage(Application->Handle, WM_SYSCOMMAND, SC_MINIMIZE, 0);
 
Zuletzt bearbeitet:
@DasLicht: Deine Lösung ist MFC, oder? Nicht jeder will MFC benutzen
Ich nehme eher an, Martin will WinApi benutzen, sonst hätte er wahrscheinlich seine Frage im MFC-Forum gestellt.

@umbrasaxum: Deine Lösung mit FindWindow ist ziemlich unschön... immerhin könnte es ja sein, dass ein anderes Fenster den gleichen Namen besitzt.... Und nur für diesen Zweck einen Unique-Namen kurz zu setzen ist auch nicht besonders schön, das sieht man nämlich als User meist trotzdem, auch wenn es noch so kurz dauert...

Also eine Lösung weiss ich aber auch nicht...
...mal wieder nur gemeckert ;)
 
Es gibt den Befehl HWND GetConsoleWindow(void);
Den allerdings erst ab Win 2000/XP. Und dafür muss _WIN32_WINNT als 0x0500 #define-d werden.

Läuft aber dann wahrscheinlich nicht mehr auf anderen Windowsen.
 
Sorry ich weiß ist schon älter aber wenn ich den Code

Code:
HWND hwnd = FindWindow(NULL, "Test");

ShowWindow(hwnd, SW_MAXIMIZE);

in mein vc++ projekt einbaue, kommt bei mir beim compilen der folgende Fehler

error C2440: 'initializing' : cannot convert from 'class CWnd *' to 'struct HWND__ *'


Was mach ich falsch?
 
Du mischst WinAPI mit MFC. Dabei kann es manchmal Missverständnisse geben. Der Compiler denkt, dass du die CWnd-Methode FindWindow() meinst, die ein CWnd* zurückgibt. Mach zwei Doppelpunkte vor FindWindow(), dann weiss er, dass die gleichnamige Funktion im globalen Namespace gemeint ist. Oder arbeite direkt mit CWnds!
 
Danke, also die Funktion funtioniert, und ich bekomme auch die Handles auf verschiedene Fenster, aber ist es auch möglich damit ein Handle auf die Taskbar zu bekommen?
 
Zuletzt bearbeitet:

Neue Beiträge

Zurück