InitDialogItems

Функция InitDialogItems предназначена для преобразования массива структур InitDialogItem в FarDialogItem.

Внимание! Внимание!

void InitDialogItems(
       const struct InitDialogItem *Init,
       struct FarDialogItem *Item,
       int ItemsNumber
)
{
  int I;
  const struct InitDialogItem *PInit=Init;
  struct FarDialogItem *PItem=Item;
  for (I=0; I < ItemsNumber; I++,PItem++,PInit++)
  {
    PItem->Type=PInit->Type;
    PItem->X1=PInit->X1;
    PItem->Y1=PInit->Y1;
    PItem->X2=PInit->X2;
    PItem->Y2=PInit->Y2;
    PItem->Focus=PInit->Focus;
    PItem->Reserved=PInit->Selected;
    PItem->Flags=PInit->Flags;
    PItem->DefaultButton=PInit->DefaultButton;
    if ((unsigned int)PInit->Data < 2000)
      strcpy(PItem->Data,GetMsg((unsigned int)PInit->Data));
    else
      strcpy(PItem->Data,PInit->Data);
  }
}

Параметры

Init
Указатель на массив структур InitDialogItem. Каждая структура описывает пункт диалога.
Item
Указатель на массив структур FarDialogItem для инициализации. Каждая структура будет описывать пункт диалога.
ItemsNumber
Количество элементов массива Init.

Возвращаемое значение

Нет.

Замечания

Введение функции InitDialogItems обусловлено следующим:
Поскольку переменная FarDialogItem.Data имеет большой размер, прямая инициализация массива FarDialogItem, может заметно увеличить потребление памяти.

В примере (см. ниже) показано как использовать функцию InitDialogItems и структуру InitDialogItem для создания диалога.

Пример

Пример вывода диалога конфигурирования плагина TempPanel:

int Config()
{
  struct InitDialogItem InitItems []={
    DI_DOUBLEBOX,3,1,72,8,0,0,0,0,(char *)MConfigTitle,
    DI_CHECKBOX,5,2,0,0,0,0,0,0,(char *)MConfigAddToDisksMenu,
    . . .
    DI_BUTTON,0,7,0,0,0,0,DIF_CENTERGROUP,1,(char *)MOk,
    DI_BUTTON,0,7,0,0,0,0,DIF_CENTERGROUP,0,(char *)MCancel
  };
  struct FarDialogItem DialogItems[sizeof(InitItems)/sizeof(InitItems[0])];
  . . .
  InitDialogItems(InitItems,DialogItems,sizeof(InitItems)/sizeof(InitItems[0]));
  . . .
  int ExitCode=Info.Dialog(Info.ModuleNumber,
                  -1,-1,76,10,
                  "TempCfg",DialogItems,
                  sizeof(DialogItems)/sizeof(DialogItems[0]));
  if (ExitCode != 7)
    return(FALSE);
. . .
}

 
Смотрите также:
Dialog | InitDialogItem | FarDialogItem