Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
каркас.doc
Скачиваний:
60
Добавлен:
03.06.2015
Размер:
1.6 Mб
Скачать

2.10. Оконная функция

Другая функция в каркасной программе является оконной функцией. В нашей программе она названа WindowFunc(), но она может иметь и любое другое имя. В качестве параметров этой функции передаются первые четыре поля структуры MSG. В нашей каркасной программе единственным используемым параметром является собственно сообщение. Однако в следующей главе Вы узнаете, как используются другие параметры этой функции.

В нашем примере оконная функция самостоятельно обрабатывает единственное сообщение WM_DESTROY. Это сообщение посылается, когда пользователь завершает программу. Обрабатывая его, оконная функция должна вызвать функцию API PostQuitMessage(). Значение параметра этой функции будет использовано как код возврата программы. Вызов PostQuitMessage() приводит к посылке Вашему приложению сооб­щения WM_QUIT, получив которое, функция GetMessage() возвращает нулевое значе­ние и завершает тем самым цикл обработки сообщений и Вашу программу.

Все остальные сообщения, получаемые оконной функцией, направляются Win­dows с помощью вызова функции DefWindowProc() для обработки по умолчанию. Это необходимо, поскольку все сообщения должны быть обработаны тем или иным способом.

Соглашения об именах. Если Вы не знакомы с программированием под Windows, некоторые имена и описания, употребляемые в каркасной программе, могут показаться несколько необычными. Однако они соответствуют соглашениям, представленным фирмой Microsoft для программирования под Windows. Для функций используются имена, построенные из глаголов и существительных, причем первые буквы этих слов – заглавные. Мы будем следовать этому соглашению в отношении большинства имен функций, упомянутых в книге.

Для имен переменных Microsoft предлагает более сложную систему, предусматривающую обозначение именуемых типов данных. Для этого используется неболь­шой префикс из строчных букв, а собственно имя начинается с заглавной буквы. Типы префиксов представлены в нижеследующей таблице 2.6. Откровенно говоря, использование префиксов, обозначающих тип данных, спорно и не всегда адекватно. Поскольку большинство Windows-программистов прибегают к такой системе именования, в данной книге будет использоваться именно эта система; Вы же в своих программах можете поступать по своему усмотрению.

Таблица 2.6

Типы префиксов

Префикс

Тип данных

1

b

Булевский (байт)

2

c

Символ (байт)

3

dw

Длинное беззнаковое целое (DWORD)

4

f

16-битный флаг (битовая карта)

5

fn

Функция

6

h

Дескриптор (handle)

7

l

Длинное целое (long)

8

lp

Длинный указатель (long pointer)

9

n

Целое (16 бит)

10

p

Указатель (pointer)

11

pt

Точка (два 32-битных целых)

12

w

Целое без знака (WORD, 16 бит)

13

sz

Указатель на строку, заканчивающуюся 0 (string zero)

14

lpsz

Длинный указатель на sz (long pointer string zero)

15

rgb

Длинное целое, содержащее цветовую комбинацию RGB