| 
 | |
|  | 
Процедура инициализации XtAppInitialize( ) или аналогичная ей возвращает указатель на объект класса ApplicationShell, который непосредственно контактирует с менеджером окон и является "началом" дерева widget. Но приложение может иметь не одно, а несколько объектов "верхнего уровня". Для их создания можно использовать процедуры XtAppCreateShell( ) (XtVaAppCreateShell( ), XtCreateApplicationShell( )). Создаваемые widget принадлежат, как правило, классу TopLevelShell.
В приводимом ниже примере приложение создает для своих нужд три окна верхнего уровня:
| #include <X11/Intrinsic.h>
#include <X11/StringDefs.h>
#include <X11/Shell.h>
void main (int argc, char  **argv)
{
  Widget             topLevel1, topLevel2, topLevel3,
                CoreWidget1, coreWidget2, coreWidget3;
  XtAppContext prAppContext;
  topLevel1      = XtVaAppInitialize (&prAppContext, "Justas1",
           NULL, 0, &argc, argv, NULL, NULL);
  topLevel2      = XtAppCreateShell ("justas2",  "Justas2",
           topLevelShellWidgetClass,
           XtDisplay (topLevel1), NULL, 0);
  topLevel3      = XtAppCreateShell ("justas3", "Justas3",
           topLevelShellWidgetCalss,
           XtDisplay (topLevel1), NULL, 0);
  coreWidget1 = XtCreateManageWidget ("Core", widgetClass,
           topLevel1, NULL, 0);
  coreWidget2 = XtCreateManageWidget ("Core", widgetClass,
           topLevel2, NULL, 0);
  coreWidget3 = XtCreateManageWidget ("Core", widgetClass,
           topLevel3, NULL, 0);
  XtVaSetValues (coreWidget1,
         XtNwidth, 100, XtNheight, 100, NULL);
  XtVaSetValues (coreWidget2,
         XtNwidth, 200, XtNheight, 200, NULL);
  XtVaSetValues (coreWidget3,
         XtNwidth, 400, XtNheight, 400, NULL);
  XtRealizeWidget (topLevel1);
  XtRealizeWidget (topLevel2);
  XtRealizeWidget (topLevel3);
  XtAppMainLoop (prAppContext);
} | 
Заметим, что существует еще один способ создания в программе нескольких объектов "верхнего уровня". В частности, можно поступать следующим образом: сначала создается shell-объект класса ApplicationShell, который никогда не показывается на экране, все остальные shell-объекты "верхнего уровня" создаются, как "потомки" данного "родителя" с помощью процедуры XtCreatePopupShell( ).
| Закладки на сайте Проследить за страницей | Created 1996-2025 by Maxim Chirkov Добавить, Поддержать, Вебмастеру |