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);


Рейтинг@Mail.ru be number one Submitter.ru - Promoting!
Хостинг от uCoz