Vollbildmodus
-
_matze schrieb:
SetConsoleDisplayMode
Wie funktioniert das????
-
Die Funktion muss man sich erst aus der DLL holen. Probers mal so aus:
#define CONSOLE_FULLSCREEN_MODE 1 #define CONSOLE_WINDOWED_MODE 2 #include <windows.h> #include <iostream> typedef BOOL (WINAPI *_SetConsoleDisplayMode)(HANDLE ConsoleOutput,DWORD dwFlags,PCOORD lpNewScreenBufferDimensions); int main() { COORD coord; coord.X=80;coord.Y=25; HMODULE kernel32_dll=LoadLibrary("kernel32.dll"); _SetConsoleDisplayMode SetConsoleDisplayMode; SetConsoleDisplayMode=(_SetConsoleDisplayMode)GetProcAddress(kernel32_dll,"SetConsoleDisplayMode"); if(!SetConsoleDisplayMode(GetStdHandle(STD_OUTPUT_HANDLE),CONSOLE_FULLSCREEN_MODE,&coord)) { //error } std::cout << "X"; getchar(); FreeLibrary(kernel32_dll); }
Bei mir klappt es nicht, da ich unter XP x64 arbeite und da offensichtlich gar kein Vollbild-Modus mehr möglich ist. Also sag mal bescheid, ob's bei dir funktioniert.
-
Oh, und coord muss man nicht mit Werten füllen, da werden die Bildschirmmaße gespeichert...
-
_matze schrieb:
std::cout << "X";
Das sollte wohl
printf ("X");
sein oder??
-
Hehe, nicht schon wieder...
Irgendwann lern ich's...
-
DLL was ist das eigentlich???
eine Library???
-
Ähm, ja! Das steht für Dynamic Link Library, also eine Bilbiothek, die du dynamisch zur Laufzeit hinzulinken kannst (per LoadLibrary), im Gegensatz zu LIBs, die man statisch linkt.
-
Es gibt mir zwei Fehlermeldungen zurück
error C2664: 'LoadLibraryW': Konvertierung des Parameters 1 von 'const char [13]' in 'LPCWSTR' nicht möglich
error C2065: 'CONSOLE_FULLSCREEN_MODE': nichtdeklarierter Bezeichner
-
1. Dann nimm LoadLibraryA (oder schalte die Unicode-Unterstützung für dein Projekt ab).
2. Diese Konstante musst du auch definieren. Sieh dir mein Beispiel nochmal an (ganz oben)!
-
_matze schrieb:
1. Dann nimm LoadLibraryA (oder schalte die Unicode-Unterstützung für dein Projekt ab).
Hat funktioniert...
_matze schrieb:
2. Diese Konstante musst du auch definieren. Sieh dir mein Beispiel nochmal an (ganz oben)!
Ich habe deinen Code bei mir reinkopiert und das geändert:
std::cout << "X";
Den Rest habe ich nicht verändert....
-
Sieht jetzt so aus:
#define CONSOLE_FULLSCREEN_MODE 1 #define CONSOLE_WINDOWED_MODE 2 #include <windows.h> #include <iostream> typedef BOOL (WINAPI *_SetConsoleDisplayMode)(HANDLE ConsoleOutput,DWORD dwFlags,PCOORD lpNewScreenBufferDimensions); int main() { COORD coord; coord.X=80;coord.Y=25; HMODULE kernel32_dll=LoadLibraryA("kernel32.dll"); _SetConsoleDisplayMode SetConsoleDisplayMode; SetConsoleDisplayMode=(_SetConsoleDisplayMode)GetProcAddress(kernel32_dll,"SetConsoleDisplayMode"); if(!SetConsoleDisplayMode(GetStdHandle(STD_OUTPUT_HANDLE),CONSOLE_FULLSCREEN_MODE,&coord)) { //error } printf ("X"); getchar(); FreeLibrary(kernel32_dll); }
-
CONSOLE_FULLSCREEN_MODE wird ganz oben per #define definiert und nachher verwendet. Klappt bei mir, wieso sollte es bei dir nicht klappen? Der Code sieht soweit richtig aus. Ansonsten nimm einfach eine 1, denn dafür steht die Konstante ja ("SetConsoleDisplayMode(GetStdHandle(STD_OUTPUT_HANDLE),1,&coord)").
-
Funktioniert
Aber die Version von CaPGeti ist wesentlich kürzer...
Danke für die Hilfe
-
08mmarte schrieb:
Funktioniert
Aber die Version von CaPGeti ist wesentlich kürzer...
Danke für die Hilfe
Klar, er simuliert ja nur die Tastenfolge ALT+ENTER, das geht natürlich auch, und deutlich kürzer. Voraussetzung ist, das die Konsole den Fokus hat.