SetConsoleDisplayMode
-
Hallo,
ich bin gerade am experimentieren an Konsolenfunktionen.
Mit diesem Code ist es mir möglich die Grösse des Konsolenfensters zu ändern.
HANDLE hConsoleOutput; SMALL_RECT srctWindow; CONSOLE_SCREEN_BUFFER_INFO csbiInfo; COORD dwSize; dwSize.X = 600; dwSize.Y = 600; hConsoleOutput = GetStdHandle(STD_OUTPUT_HANDLE); SetConsoleScreenBufferSize(hConsoleOutput, dwSize); GetConsoleScreenBufferInfo(hConsoleOutput, &csbiInfo); srctWindow = csbiInfo.srWindow; srctWindow.Top = 0; srctWindow.Bottom = 50; //unterer Fensterrand srctWindow.Left = 0; srctWindow.Right = 150; // rechter Fensterrand SetConsoleWindowInfo(hConsoleOutput, TRUE, &srctWindow);
Laut MSDN gibt es noch eine Funktion (SetConsoleDisplayMode) mit der man die Konsole auf Vollbild setzen kann. Nur gibt es diese Funktion nicht ganz. Auch in der Hilfe von C++.Net kann ich diese Funktion nicht finden.
Gibt es eine Funktion mit der ich die Konsole auf Vollbild setzen kann? Also die Fenstergrösse an die momentane Auflösung anpasst?
Vielen Dank.
Gruss,
Cyrill
-
Vollbild != Konsole auf maximiert setzen.
Maximieren: ShowWindow(GetConsoleWindow(), SW_MAXIMIZE)
Dabei ist zu beachten, dass GetConsoleWindow() erst ab Win2k dabei ist und für frühere Versionen ein übler Hack benützt werden muss. Ein #define _WIN32_WINNT 0x0500 mit neuem PSDK ist nötig.Vollbild: SetConsoleDisplayMode() ist schon richtig, allerdings gibts das noch gar nicht im <windows.h>-Header sondern nur implementiert in der kernel32.dll. Du musst also mindestens WinXP fahren und die Funktion aus der DLL direkt laden. Auch hier gibts einen üblen Hack für ältere Versionen.
Ist ne lange Geschichte, am besten holst du dir einfach mal die IC (http://ic.sidewindershome.net). Wenns dich genauer interessiert schaust du dir die Implementierung dieser an.
MfG SideWinder
-
Hey danke für die schnelle Antwort.
Ich hab jetzt noch die Funktion "GetLargestConsoleWindowSize", damit bekomme ich ja raus wie Gross ich das Fenster machen kann. Gibt es auch dann eine Funktion, mit der es mir möglich ist die Position des Fensters zu ändern? Also ganz in die obere linke Ecke setzen.Ich probiere mal noch deine Funktion.
-
SetWindowPos()
schau dir einfach die Implementaiton von der IC an, da ist alles implementiert was du suchst.
MfG SideWinder
-
Kann es sein das die Funktion "ShowWindow(GetConsoleWindow(), SW_MAXIMIZE)" sich nicht auf die Win32 Konsolenanwendungen verwenden kann?
-
Doch. Aber du musst aufpassen: Du maximierst das Fenster so, dass es nicht größer als der Konsolepuffer ist.
Du musst also zuerst den KOnsolenpuffer auf GetLargestConsoleWindow().X+1/GetLargestConsoleWindow().Y+1 setzen. DAnach maximieren.
Findest du in der Mover-Demo der IC...
MfG SideWinder
-
Dieser Thread wurde von Moderator/in HumeSikkins aus dem Forum C++ in das Forum DOS und Win32-Konsole verschoben.
Im Zweifelsfall bitte auch folgende Hinweise beachten:
C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?Dieses Posting wurde automatisch erzeugt.