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


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


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

113

построении диалога. В нашем случае диалог сохранен в виде ресурса, поэтому мы указываем имя ресурса.

Третий аргумент - хэндл родительского окна. О том, что такое роди­тельское окно, нужно сказать особо.

Во-первых, если мы представим окна, начиная с Desktop'a, как распо­лагающиеся друг над другом (в так называемом Z-порядке), то дочернее окно обязательно будет над родительским, от этого зависит порядок обработки сообщений. Во-вторых, сообщения о действиях с диалоговым окном (нотификационые сообщения) система будет посылать именно родительскому окну. В-третьих, при закрытии родительского окна дочернее окно закрывается автоматически. Возможно, конечно, создание диалоговых окон без родителя, но тогда придется писать огромное ко­личество кода, обеспечивающее нормальное функционирование окна.

Обычно родительским окном является то, оконная функция которого создает диалоговое окно. В программе основное окно программы являет­ся родительским по отношению к диалоговому окну.

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

В дополнение к этому заметим, что последний аргумент функции DialogBoxParamQ - это какой-то параметр, определяемый программи­стом, который может быть передан функции диалогового окна.

Итак, мы рассмотрели функцию основного окна и остановились на функции окна диалога. На очереди - ее рассмотрение.

Диалоговая функция очень напоминает функцию окна, но имеет ряд отличий. Во-первых, обычная оконная функция возвращает значение типа LRESULT. Диалоговая функция возвращает значение типа BOOL. Во-вторых, обычная функция окна передает сообщения, обрабатывать которые не нужно, процедуре обработки по умолчанию (DefWindowProc()). Диалоговая функция в том случае, если она обрабо­тала сообщение, возвращает TRUE, а в противном случае FALSE. Дру­гими словами, диалоговая функция должна вернуть FALSE в том случае, если ей необходимо передать сообщение для дальнейшей обработки в «недрах» Windows.




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



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