Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Stingray Studio от Rogue Wave Software

Михаил Фукс
mfouks@aplana.com

На сегодняшний день более 300.000 разработчиков во всем мире пользуются продуктами Rogue Wave Software - одного из ведущих поставщиков продуктов класса SDK. Особой популярностью заслуженно пользуется Stingray Studio - набор расширений библиотеки MFC, функциональность которых существенно расширяет предоставляемые MFC возможности в части организации пользовательского интерфейса приложений.

В данной статье приведен обзор инструментальных средств, входящих в состав текущей версии Stingray Studio 2002 и возможностей, которые открываются для разработчиков GUI, применяющих этот продукт.

Что такое Stingray Studio 2002

Stingray Studio 2002 представляет собой набор библиотек классов, построенных на базе MFC, полностью совместимых с этой библиотекой и удовлетворяющих практически все потребности разработчика при конструировании пользовательского интерфейса. Поставка компонентов в исходных кодах дает возможность использовать их максимально гибко и обеспечивает совместимость практически со всеми используемыми в настоящее время компиляторами C++, в том числе VC++ 6.0 и VC++ 7.0.

Помимо библиотек классов, в поставку Stingray Studio 2002 входят прекомпилированные ActiveX-компоненты, которые позволяют использовать объекты библиотек в средах разработки, не основанных на C++.

Обзор компонентов Stingray Studio 2002

Objective Toolkit

Objective Toolkit предоставляет разработчикам программного обеспечения более 60 компонентов, функциональность которых восполняет пробелы, имеющиеся в MFC. Классы Objective Toolkit позволяют программистам работать в привычном окружении MFC и одновременно экономить время, необходимое для решения задач программирования пользовательского интерфейса под MFC.

Компоненты, предоставляемые Objective Toolkit, можно разделить на следующие категории:

  • Элементы пользовательского интерфейса, в том числе разнообразные виды кнопок, компонентов ввода текста, выпадающих списков, окон с закладками, компоненты калькулятора, календаря, валюты, времени и даты, бегущей строки, progress bar, настраиваемые toolbar и status bar, а так же tree control с расширенной функциональностью. Кроме того, имеются классы компонентов splash window, tip of the day, keyboard shortcut и thumbnail.
  • Компоненты организации многооконного интерфейса, как расширяющие стандартный MDI, так и предоставляющие альтернативные возможности его организации. Сюда можно отнести набор расширений MFC, дополняющих ее возможности по созданию стыкуемых панелей управления с изменяемыми размерами, расширения класса MFC CView, обеспечивающие расширенное масштабирование и панорамирование. К этой категории также относятся Layout Manager Framework и Advanced Docking Windows (ADW), наборы классов для построения профессионального пользовательского интерфейса с расширенной логикой управления окнами и Model-View-Controller (MVC) Framework, классы, расширяющие стандартную архитектуру "документ-представление-приложение".
  • Служебные компоненты, применяемые для шифрования и компрессии данных, доступа к файловым функциям и к реестру ОС, разбора формул и генерации случайных чисел, а также классы для работы с текстовыми потоками. Для работы с изображениями пригодятся компоненты, обеспечивающие полный набор функций просмотра, редактирования и конвертирования образов, хранимых в форматах DIB, GIF, JPEG, PCX, TGA, и TIFF. Имеются также классы ActiveScript hosting engine, предоставляющего MFC-приложению полный доступ к технологии Microsoft ActiveScript.

Рисунок 1. Пример использования архитектуры Extended Control Bar

При установке Objective Toolkit выполняется его полная интеграция в используемую среду разработки, будь то Visual C++ 6.0 / MFC 6.0 или Visual C++ 7.0 / MFC 7.0. Компоненты Objective Toolkit поддерживаются AppWizard, Component Gallery, IntelliSense.

Stingray Foundation Library 2.0

Библиотека SFL реализована в виде набора независимых пакетов, в число которых входит менеджер вывода, классы архитектуры model-view-controller, и шаблонов разработки, которые могут быть использованы для интеграции либо с MFC, либо с ATL. SFL одинаково хорошо приспособлена для использования в обеих средах.

SFL расширяет ATL оконными классами и классами приложения, что позволяет использовать только ATL для построения всего приложения. Разработчики могут использовать предоставляемый AppWizard, что значительно сокращает начальный этап разработки приложения. Помимо этого, SFL предоставляет классы, инкапсулирующие Windows GDI, что особенно привлекательно для разработчиков ATL, поскольку сама по себе ATL не предлагает равнозначного решения.

Objective Chart 7.0

Возможности Objective Chart по созданию диаграмм и управлению ими, а также замечательная расширяемость продукта способны удовлетворить требования самого взыскательного разработчика.

Перечислим основные особенности Objective Chart:

  • возможность создания более 30 типов диаграмм;
  • возможность быстро создать собственные типы диаграмм;
  • возможность сохранять параметры диаграммы в текстовом файле или в виде графического образа диаграммы;
  • доступ к данным из различных источников, простое управление отображаемыми данными путем доступа к коллекциям объектов определенных типов, возможность интерактивного управления данными диаграммы путем манипулирования графическими элементами самой диаграммы;
  • наличие Chart Editor и Chart Wizard, предназначенных для использования конечными пользователями и позволяющих изменять представление диаграммы и ее данные.

Рисунок 2. Примеры диаграмм Objective Chart

Objective Grid 9.0

Objective Grid предоставляет разработчикам законченный набор классов, расширяющих MFC и реализующих элемент управления "таблица" (grid), обладающий действительно широкими возможностями. Без преувеличения можно сказать, что Objective Grid не только не уступает, но и, на наш взгляд, во многом превосходит по функциональности аналогичные элементы управления других производителей, в том числе и Microsoft Excel Worksheet.

Перечислю некоторые особенности работы с Objective Grid:

  • возможность работы с формулами, которые могут включать в себя более 200 встроенных функций;
  • таблица может быть связана с источником данных; при этом поддерживаются как стандартные типы источников (ODBC, DAO, OLE DB), так и определенные разработчиком;
  • внутренняя структура таблицы имеет исключительно объектную архитектуру, что, во-первых, позволяет легко создавать объекты любого уровня с нестандартными свойствами и, во-вторых, облегчает управление таблицей при создании приложения;
  • Objective Grid совместима с форматом файлов Excel, полностью поддерживается формат Biff8;
  • Objective Grid совместима с ОС семейства Win 9* кроме Windows 95, а также со всеми ОС семейства WinNT (включая XP).

Помимо возможности создания ячеек новых типов, Objective Grid предоставляет чрезвычайно широкий набор готовых типов ячеек. Кроме того, Grid Designer является действительно мощным и удобным инструментом визуального проектирования таблиц (см. рис. 3). В совокупности все это позволяет с минимальными затратами времени организовать достаточно сложный пользовательский интерфейс с использованием одного единственного контрола!


Рисунок 3. Пример работы Objective Grid Designer

Objective Views 8.0

Objective Views предоставляет разработчикам библиотеку классов, использование которой позволяет создавать приложения с графическим интерфейсом drag&drop, по функциональности аналогичным интерфейсу Microsoft Visio. Классы Objective Views позволяют разработчикам создавать в рамках разрабатываемых приложений собственные графические объекты.

Objective Views предоставляет canvas (поверхность для изображения), которая может быть помещена в любое окно приложения MFC. Графические компоненты (линии, текст, иконки и т.д.) пользователь может поместить на canvas с использованием технологии drag&drop. Графические компоненты могут быть объединены в сложные графические образы, символы. Символы, в свою очередь, могут быть объединены в более сложные структуры, в том числе в иерархические, или в графы. Canvas поддерживает полный набор функций манипулирования графическими компонентами и символами, в том числе масштабирование, вращение, привязку к координатной сетке. Кроме того, предоставляется возможность Undo / Redo.

Objective Views включает в себя Symbol Designer, позволяющий пользователям создавать, редактировать и сохранять символы для последующего использования в приложениях Objective Views, а также создавать библиотеки символов для повторного их использования в различных приложениях.


Рисунок 4. Пример окна приложения Objective Views

Objective Edit 7.0

Objective Edit представляет собой расширяемое и настраиваемое решение для редактирования текста с функцией динамического форматирования текста в зависимости от заданной синтаксической структуры. Objective Edit незаменим при разработке редакторов текста с предопределенной синтаксической структурой, в частности, при создании редакторов исходного кода на языках программирования.

Objective Edit предоставляет простые и интуитивно понятные спосособы настройки систнаксического анализатора. Разработчик ПО имеет возможность непосредственно работать с ini-файлами определенного формата, в которых содержатся правила и определения, необходимые для синтаксического анализа. Поставка Objective Edit содержит синтаксические схемы для C, C++, Java, HTML, XML, Visual Basic и C#.

Objective Edit поддерживает все стандартные для современных текстовых редакторов функции, в том числе поиск и замену, Undo и Redo, drag&drop, печать и предварительный просмотр. Objective Edit позволяет расставлять и отображать пометки в тексте, аналогичные меткам точек остановки в IDE Visual Studio. Кроме того, Objective Edit предоставляет возможность экпорта своего содержимого в формате HTML с сохранением разметки и форматирования.

Интеграция с MFC и пример кода приложения Stingray Studio 2002

Поскольку продукты семейства Stingray Studio 2002 представляют собой совокупность классов, порожденных от классов MFC, создание приложений с использованием Stingray Studio 2002 не требует от разработчика применения каких-то специальных приемов программирования. Единственное требование - это изучить иерархию классов, входящих в Stingray Studio 2002.

Иерархия классов меню Objective Toolkit

В качестве примера иерархии классов Stingray Studio 2002 рассмотрим классы, входящие в состав Objective Toolkit и используемые при работе с меню.

Приведем иерархию классов панели управления для MFC и Objective Toolkit (рис. 5).


Рисунок 5. Иерархия классов меню Objective Toolkit

Благодаря такой схеме наследования, панели меню Objective Toolkit обладают функциональностью панелей управления, что позволяет организовывать прользовательский интерфейс, в котором меню, как и панели управления, можно свободно позиционировать в окне приложения, обеспечивать автоматическое позиционирование при приближении к границам окна и т.д.

Применение классов меню Objective Toolkit

Помимо рассмотренных выше классов, при построении приложения нам также потребуются классы окон приложения (рис. 6).


Рисунок 6. Иерархия классов окон приложения Objective Toolkit

Главное окно нашего приложения будет реализовано классом CMainFrame, который является дочерним классом SECFrameWnd (в случае однодокументного приложения).

Встраивание панелей меню Objective Toolkit в приложение

Инстанциируем объект панели меню в конструкторе окна приложения (свойство m_pMenuBar является членом класса SECFrameWnd):

CMainFrame::CMainFrame()
{
  m_pMenuBar = new SECMDIMenuBar; 
}

Также необходимо добавить код уничтожения объекта панели меню в код деструктора класса окна приложения:

CMainFrame::~CMainFrame() 
{
  if(NULL != m_pMenuBar)
  {
    delete m_pMenuBar;
    m_pMenuBar = NULL;
  }
}

В обработчике события OnCreate() окна приложения необходимо добавить вызов метода SetMenuInfo() класса SECToolBarManager для определения ресурсов меню, которые будут использованы приложением. Эта функция-член принимает переменное количество параметров в зависимости от колическтва панелей управления (в число которых входят и панели меню). Синтаксис вызова выглядит так:

SetMenuInfo(<count>,<menu id 1>,<menu id 2>,...,<menu id n>);

Например,

pMgr->SetMenuInfo(4,IDR_MAINFRAME,IDR_EDITVIEW, IDR_LISTVIEW, IDR_FILEVIEW);

Для разрешения автоматического позиционирования панели меню по границам окна приложения (докинга) в обработчик события OnCreate() необходимо добавить следующий вызов:

m_pMenuBar->EnableDocking(CBRS_ALIGN_ANY);

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

DockControlBar(m_pMenuBar);

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

Заключение

Надеюсь, мне удалось показать, насколько инструменты Rogue Wave Stingray Studio расширяют возможности разработки интерфейсов и клиентских приложений и помогают решать сложные и трудоемкие задачи.

Уже сегодня Stingray Studio 2002 поддерживает как MS VC++ 6.0, так и MS VC++ 7.0, что делает ее крайне привлекательной для разработчиков .NET. Однако, на мой взгляд, круг потенциальных пользователей данного продукта не ограничивается приверженцами продуктов Microsoft: Stingray Studio могут использовать все, кто работает с компиляторами С++, поддерживающими MFC, в том числе Borland C++ Builder.

Более подробно с линейкой инструментальных средств Rogue Wave Software, помимо Stingray Studio, содержащей целый ряд не менее полезных и удобных в использовании решений, можно познакомиться на http://www.roguewave.com/ или http://rw.aplana.ru/.

Оставить комментарий

Комментарий:
можно использовать BB-коды
Максимальная длина комментария - 4000 символов.
 

Комментарии

1.
Аноним
Мне нравитсяМне не нравится
19 декабря 2004, 04:34:39
Где все это мона скачать на шару?
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог