Очевидно, любое приложение до вывода данных на экран должно описать окно, в которое будет производиться вывод. Нужно указать геометрию окна - его размеры, наличие области заголовка, рамки, значка, форму курсора и многие другие параметры. Также необходимо знать свойства окна. После этого окно нужно создать и отобразить на экране. Уже после этого можно обращаться к функциям вывода данных в окно. Но простейшее приложение можно создать и без этого. Например, в API Windows есть функция вывода сообщения MessageBox(), которая самостоятельно создает окно и выводит в нем заданный пользователем текст.

Заметим, что клавиатуру или мышь нельзя так легко поделить между приложениями, как экран. Несмотря на то что параллельно выполняется несколько приложений, вводимые с клавиатуры символы предназначены только одному из них. Говорят, что окно, в которое поступают данные с клавиатуры, находится «в фокусе ввода». Область заголовка окна, находящегося в фокусе ввода, имеет более яркий или насыщенный цвет. Переместить фокус можно при помощи вызова функции SetFocus(hWnd). Разные типы окон могут по-разному реагировать на попытку переместить фокус. Так, «модальное» окно будет находиться в фокусе до тех пор, пока не будет закрыто. Оно не позволяет передать фокус другому окну.

В листинге 1.1 приведен пример приложения, использующего функцию Message-ВохО.

Листинг 1.1

finclude <windows.h>

int АРIENTRY WinMain(HINSTANCE KodPril. HINSTANCE. PSTR, int Oknlcon) {

int I;

while ((I - MessageBox(NULL."Bbixofl из программы?"."Это заголовок", MBJDKCANCEL | MBJCONEXCLAMATION | MBJDEF BUTTON 1) )==IDCANCEL) MessageBox(NULL,"3To текст в окне". "Это заголовок". МВ_0К | IC0NST0P): return 0;

}

Перед именем WinMain указан модификатор APIENTRY. Он напоминает, что данная функция вызывается не приложением, а операционной системой. Кроме слова APIENTRY, перед именем функций часто встречаются модификаторы WINAPI, WINAPIV, _cdecl, PASCAL, CALLBACK, APIPRIVATE. Чем они отличаются? Ответ можно найти в файле


⇐ Предыдущая| |Следующая ⇒