Азбука программирования в Win32 API


Азбука программирования в Win32 API - стр. 210


WINBASEAPI BOOL WINAPI AllocConsole(VOID);

251

Эта функция, возвращающая TRUE при успешном завершении, пре­доставляет вызвавшей ее программе консоль. Внешне консоль выглядит так же, как и обычное окно. У него есть заголовок, системное меню, кнопки максимизации и минимизации. Если программе необходима собственная консоль, а она работает в унаследованной, то программа может перед вызовом AlIocConsole() произвести освобождение консоли, вызвав для этого функцию FreeConsole(), описание которой практически не отличается от описания предыдущей функции:

WINBASEAPI BOOL WINAPI FreeConsole( VOID );

Если программа запускается в самостоятельной консоли, то вызов FreeConsoleQ не повлечет за собой никаких неприятных последствий.

При завершении программы самостоятельная консоль автоматически уничтожается, унаследованная же продолжает свое существование до момента завершения породившей ее программы.

ПРИСВОЕНИЕ КОНСОЛИ ИМЕНИ

Очередным шагом после создания консоли будет присвоение консоли имени. Это имя будет отображено в заголовке консоли. Делается это с помощью функции SetConsoleTitle(). Из wincon.h извлекаем прототип этой функции:

WINBASEAPI BOOL WINAPI SetConsoleTitleA(LPCSTR IpConsoleTitle ); WINBASEAPI BOOL WINAPI SetConsoleTitleW(LPCWSTR IpConsoleTitlc);

#ifdefUNICODE

#define SetConsoleTitle SetConsoIeTitleW

#else

«define SetConsoleTitle SetConsoleTitleA

tfcndif// IUNICODE

Аргумент этой функции - указатель на строку символов, содержащую текст, который будет отображен в заголовке окна консоли.

ВВОД И ВЫВОД В КОНСОЛИ

Основные функции вывода в окно консоли

Когда я изучал этот вопрос, функции ввода и вывода в консоли на­помнили мне вызов прерываний DOS (наверное, так и должно быть, ведь консоль эмулирует DOS-машину). Поэтому знакомые с прерываниями DOS программисты увидят в функциях ввода - вывода много «знакомого».

252

В DOS для операций ввода - вывода считалось, что стандартные пото­ки, такие, как поток ввода, поток вывода и поток ошибок, имеют стан­дартные, заранее определенные хэндлы. При работе в режиме консоли стандартные потоки предопределенных хэндлов не имеют, поэтому эти хэндлы необходимо получить, обратившись к функции GetStdHandleQ. По ее описанию -




Начало  Назад  Вперед



Книжный магазин