Шаг 74.
Visual Prolog.
Диалоговые окна, определенные программистом

    На этом шаге мы рассмотрим диалоговые окна, определенные программистом.

    Если нет подходящего стандартного диалогового окна, то программист может спроектировать свое диалоговое окно.

Идентификаторы элементов управления

    Каждый элемент управления в диалоговом окне, должен иметь идентификатор (целое число), который уникален в пределах диалогового окна. Этот идентификатор называется идентификатором элемента управления (CtrlId). Целое значение, соответствующее идентификатору элемента управления, используется в сообщениях уведомления родительских окон. Идентификатор элемента управления определяет, какой элемент породил событие.

    Если новый элемент управления размещается в диалоговом окне при помощи редактора окон и диалоговых окон VDE, он получает именованный идентификатор - константу. Во время компиляции VDE генерирует файл <project>.CON, который связывает целые значения со всеми константами - идентификаторами ресурсов элементов управления согласно конкретным правилам. Этот файл включен во все модули, которые используют VPI. Во время построения проекта VDE генерирует файл <project>.RES, в котором все элементы управления идентифицируются только этими целыми значениями.

Специальные идентификаторы ресурсов элементов управления

    Следующие идентификаторы ресурсов должны использоваться для всех кнопок ОК, Cancel и Help.

   idc_ok=l 
   idc_cancel=2 
   idc_help=3

    При использовании пакета диалоговых окон важно, чтобы диалоговое окно имело эти три кнопки с надлежащими идентификаторами, потому что предполагается, что эти кнопки существуют, и используются для закрытия диалогового окна.

Создание диалогового окна

    Если диалоговое окно было сгенерировано при помощи редактора диалоговых окон Visual Prolog и размещено в сегменте ресурсов, то создать диалоговое окно можно при помощи вызова:

   Window=win_CreateResDialog(
      ParentWindow,Windowtype,ResId,EventHandler,CreationData)

    Здесь ParentWindow - это окно, которое получит фокус после закрытия диалогового окна. Windowtype должен быть равен wd_Modal или wd_ModeLess в зависимости от того, какое нужно диалоговое окно. ResId - целое число, которое определяет диалоговое окно в RES-файле, EventHandler - предикат обратного вызова, который используется для обработки событий от диалогового окна, CreationData - значение типа long, которое передается событию e_Create.

    Также можно создать диалоговое окно из списковой структуры вызовом:

   Window=win_CreateDynDialog(
       ParentWindow,Windef_list,EventHandler,CreationData)

    Другой способ создания диалоговых окон - создание непосредственно диалогового окна при помощи предиката win_Create, а затем поочередное создание элементов управления вызовом предиката win_CreateControl.

Инициализация диалогового окна

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

Таблица 1. Предикаты для работы с элементами управления
Тип элемента управления Предикаты
Флажки win_Check
Полосы прокрутки win_SetScrollPos
Поля редактирования win_SetText
Статический текст win_SetText
Списки Все предикаты с префиксом lbох_


    Замечание: Все эти предикаты работают с оконными идентификаторами для элементов управления, а не с идентификаторами самих элементов управления.

    На следующем шаге мы рассмотрим операции рисования.




Предыдущий шаг Содержание Следующий шаг