Q> Как переключить
консоль в полный экран и обратно?
A> (c)1999 Ashot Oganesyan K, SmartLine, Inc
mailto:ashot@aha.ru
Когда Вы запускаете свое
приложение в консольном окне Вы
можете
нажать ALT+ENTER для переключения
консоли в полный экран.Но нет
документированных функций,чтобы
сделать это.Однако Windows9X посылает
сообщение WM_COMMAND со специальным
идентификатором,когда
пользователь
нажимает ALT+ENTER:
#define ID_SWITCH_CONSOLEMODE 0xE00F
Для переключения режимов Вы можете
использовать ф-ию SendMessage:
SendMessage(hWnd,WM_COMMAND,ID_SWITCH_CONSOLEMODE,0);
Однако это не работает в Windows NT/2000.
Windows NT/2000 содержит две
недокументированные функции,которые
позволяют нам добраться до
консольного окна:
BOOL SetConsoleDisplayMode (
HANDLE hOut, // standard output handle
DWORD dwNewMode, // specifies the display mode
LPDWORD lpdwOldMode, // address of variable for previous value of
display mode
);
BOOL GetConsoleDisplayMode (
LPDWORD lpdwMode, // address of variable for current value of
display mode
);
Эти функции экспортируются Kernel32.dll,
но Kernel32.lib их не содержит.
Поэтому мы вынуждены использовать
функцию GetProcAddress:
typedef BOOL (WINAPI
*PROCSETCONSOLEDISPLAYMODE)(HANDLE,DWORD,LPDWORD);
typedef BOOL (WINAPI *PROCGETCONSOLEDISPLAYMODE)(LPDWORD);
PROCSETCONSOLEDISPLAYMODE SetConsoleDisplayMode;
PROCGETCONSOLEDISPLAYMODE GetConsoleDisplayMode;
HMODULE hKernel32 = GetModuleHandle("kernel32");
SetConsoleDisplayMode = (PROCSETCONSOLEDISPLAYMODEELLWND)
GetProcAddress(hKernel32,"SetConsoleDisplayMode");
GetConsoleDisplayModeplayMode = (PROCGETCONSOLEDISPLAYMODE)
GetProcAddress(hKernel32,"GetConsoleDisplayMode");
HANDLE hOut = GetStdHandle(STD_OUTPUT_HANDLE);
DWORD dwOldMode;
SetConsoleDisplayMode(hOut,1,&dwOldMode);