The OpenNET Project
 
Поиск (ключи):    ПРОГРАММЫ СТАТЬИ СОВЕТЫ ФОРУМ
  WIKI НОВОСТИ (+) MAN'ы ДОКУМЕНТАЦИЯ

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

3.3.7. Программы, имеющие много объектов (окон) верхнего уровня.

    Процедура инициализации 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( ).


ПОДПИШИСЬ НА ЖУРНАЛ Linux Format 2012!

Журнал "Linux Format" (Линукс Формат)- Единственный в России и странах СНГ журнал на русском языке, посвящённый Linux и свободному ПО. Журнал для IT-директоров, IT-менеджеров, программистов, системных администраторов, учителей школ и преподавателей ВУЗов и всех пользователей ПК. В каждом выпуске: Новости индустрии OpenSource, обзоры новинок свободного ПО, обучающие и методические статьи.

Каждый, кто оформит подписку, получает бонусы и подарки- объёмные наклейки на системный блок, диск с архивом номеров за 2005-2011 г.г. и ежемесячно электронную версию журнала в pdf-формате.

Оформить подписку на год


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