The OpenNET Project / Index page

[ новости/++ | форум | wiki | теги ]

Каталог документации / Раздел "Программирование, языки" / Оглавление документа

3.1.2. Инициализация программы. Контекст программы.

    Программы, работающие в X, должны выполнить ряд стандартных действий, а именно: установить связь с сервером, задать необходимые свойства для менеджера окон, и выполнить массу других шагов. Если используется Xt, то все это делается одной процедурой - XtInitialize( ). Она инициализирует сам пакет, менеджер ресурсов (resourse manager) X Window, и выполняет другие необходимые операции. Для каждого приложения обращение к XtInitialize( ) или аналогичной процедуре (см. ниже) должно предшествовать всем другим вызовам процедур Xt. После завершения, XtInitialize( ) возвращает идентификатор sheel-widget, который может использоваться как корень дерева объектов программы. XtInitialize( ) имеет следующий прототип:

Widget XtInitialize ( char  *psShellName,
	       char  *psApplicationClass,
	       XrmOptionDescRec pOptions [ ], Cardinal nNumOpt,
	       Cardinal  *argc, char  *argv [ ] );

    Первый аргумент процедуры - имя создаваемого функцией shell-объекта. Эта же строка задает и имя программы. Второй аргумент - класс приложения. Как правило, имя класса программы совпадает с именем самой программы , только начинается с заглавной буквы. Менеджер ресурсов использует имя и класс программы для поиска ее параметров в базе данных ресурсов.

    Каждая программа при запуске может задать в командной строке некоторые дополнительные опции. В Xt определены "стандартные" параметры, которые могут быть переданы при запуске программы (см. 3.4.2.). Кроме этого, в командной строке могут быть и нестандартные, свойственные только данному приложению опции. XtInitialize( ) сканирует строку и размещает соответствующие значения ресурсов в базе данных. Если приложение использует нестандартные опции, то следует создать массив структур типа XrmOptionDescRec и передать указатель на него в качестве третьего параметра процедуры XtInitialize( ). При этом четвертый аргумент определяет число элементов массива. Если нестандартные параметры не используются, то в качестве третьего и четвертого параметров следует задавать NULL и 0 соответственно.

    Пятый и шестой аргументы в рассматриваемой процедуре используются для передачи данных в программу из командной строки.

    Обращение к XtInitialize( ) эквивалентно следующей последовательности вызовов (прототипы процедур см. в приложении 2 Ссылка данного издания):

XtToolkitInitialize (. . . . .);	/* Инициализация Xt */
XtOpenDisplay (. . . . .);		/* Связь с сервером */
XtAppCreateShell (. . . . .);	        /* Создание shell-widget */

    При инициализации создается также контекст программы - структура, которая хранит всю необходимую информацию о приложении. Контекст помогает программе быть менее "зависимой" от различных модификаций в операционной системе. XtInitialize( ) автоматически создает некоторый контекст (default context). Но тем не менее, начиная с X11R4, рекомендуется, чтобы каждый экземпляр программы сам создавал свой личный контекст. Для этого инициализация задачи должна делаться функцией XtAppInitialize( ).

    Обращение к XtAppInitialize( ) эквивалентно вызову процедур:

XtToolkitInitialize (. . . . .);	/* Инициализация Xt */
XtOpenDisplay (. . . . .);		/* Связь с сервером */
XtAppCreateShell (. . . . .);	        /* Создание shell-widget */
XtCreateApplicationContext (. . . . .); /* Создание контекста */


  Закладки на сайте
  Проследить за страницей
Created 1996-2017 by Maxim Chirkov  
ДобавитьРекламаВебмастеруГИД  
Hosting by Ihor