Опрос
Вы участвуете в программе Windows Insider?
Популярные новости
Обсуждаемые новости

17.01.2011 15:26 | deeper2k

После длительного перерыва мы продолжаем работать с лентой Windows в WinForms-приложениях. Как обычно, напомню, что в предыдущей статье мы рассмотрели несколько типов коллекций (или галерей) Windows Ribbon.

За это время Арик Познански успел выпустить версию 2.6 библиотеки Windows Ribbon for WinForms. В ней произошли довольно серьёзные изменения, поэтому вся эта статья будет посвящена именно обновлениям в данной версии.

Начнём со списка произведённых изменений.

Так что же нового?

  • Упрощённое использование элемента управления Ribbon.
    Просто перетащите контрол ленты на форму — и можете работать. Никакой реализации IRibbonForm, никакой обработки изменения размеров, никаких вызовов InitFramework и DestroyFramework (прим. переводчика: см. первую статью).
  • Добавлена поддержка локализации
  • Решение обновлено для использования с .NET 4 и Visual Studio 2010
  • Добавлен инструмент RibbonGenerator
  • Добавлена возможность указывать "быстрые клавиши" в формате XML
  • А также исправлено несколько ошибок (в частности, ошибка с галереями — прим. переводчика: см. предыдущую статью).


Что насчёт примеров?
Все 18 примеров были обновлены для использования новой инфраструктуры.

Кроме того, появился новый пример, "19-Localization", который показывает, как использовать новую возможность локализации элемента управления ленты.

Более подробно о поддержке локализации и инструменте RibbonGenerator можно прочитать в этой статье на CodeProject.

Прим. переводчика: локализация будет рассмотрена в одной из последующих статей цикла, а об инструменте RibbonGenerator будет рассказано чуть ниже.

Нужно знать что-нибудь ещё?
Просто убедитесь, что вы скомпилировали и установили RibbonGenerator. Проект установщика входит в пакет поставки библиотеки. Это средство необходимо для создания DLL-библиотек ленты.

Благодарность
Я бы хотел поблагодарить Бернхарда Эльбла (Bernhard Elbl) за его большой вклад в проект. Бернард теперь является частью команды разработчиков проекта на codeplex.


Ribbon for WinForms: краткое руководство
В связи с большим количеством запросов инструкции по работе с новой версией проекта Ribbon for WinForms, я попросил Бернхарда написать краткое руководство.

Бернхард согласился и написал отличное руководство, которое я вам сейчас представлю. Заметьте, что первые 2 шага должны быть выполнены только в первый раз перед созданием приложений с лентой. Остаётся только один шаг (3) из руководства. Проще и быть не может!

Прим. переводчика: шаги с загрузкой и установкой Windows 7 SDK и последней версии RibbonLib (на момент написания статьи это версия 2.6) мы пропустим, так как они слишком очевидны.


Шаг 1. Соберите установщик RibbonGenerator и установите его.
Откройте решение Visual Studio 2010 для RibbonGenerator (.\RibbonLib_v2.6\RibbonGenerator\RibbonGenerator.sln), установите конфигурацию сборки на "Release" и соберите проект "RibbonGenerator.Setup" дважды!

После второй сборки проект скомпилируется без ошибок! Это официальный баг Visual Studio 2010, и нам придётся с этим жить.


Теперь вы можете запустить собранный установщик, который вы найдёте здесь: .\RibbonLib_v2.6\RibbonGenerator\RibbonGenerator.Setup\Release\RibbonGenerator.Setup.msi

Шаг 2. Скомпилируйте Ribbon.dll
Чтобы получить скомпилированную версию Ribbon.dll, откройте соответствующее решение (.\RibbonLib_v2.6\Ribbon-cs.sln) и соберите его с помощью Visual Studio (прим. переводчика: достаточно собрать только проект Ribbon).

Шаг 3. Создайте новое приложение Windows Forms с контролом ленты
Добавьте Ribbon в панель элементов, щёлкнув на ней правой кнопкой мыши и выбрав пункт "Выбрать элементы…". Укажите файл .\RibbonLib_v2.6\Ribbon\bin\Release\Ribbon.dll.

Перетащите элемент управления Ribbon на форму.


Для основной части формы можно добавить элемент управления Panel и задать свойству "DockStyle" значение "Fill".

Добавьте в проект новый XML-файл и назовите его Ribbon.xml. Добавьте в него следующее содержимое:

<?xml version='1.0' encoding='utf-8'?>
<Application xmlns='http://schemas.microsoft.com/windows/2009/Ribbon'>
<Application.Commands>
</Application.Commands>

<Application.Views>

<Ribbon>
</Ribbon>
</Application.Views>
</Application>


Задайте свойству файла Ribbon.xml "Специальный инструмент" значение "RibbonGenerator", чтобы автоматически сгенерировать файл .ribbon.

Прим. переводчика: для удобства работы с файлом разметки — думаю, вы уже поняли, что это именно он — вы можете по-прежнему указать для него соответствующую схему (см. первую статью).


Теперь необходимо указать файл .ribbon в свойстве элемента управления Ribbon на форме. Имя должно быть полным, включая пространство имён проекта.


Вот и всё. Теперь ваше приложение поддерживает ленточный интерфейс.


Ribbon for WinForms: подробнее об инструменте RibbonGenerator
Бернхард Эльбл опубликовал ещё два сообщения в своём блоге, подробнее описывающих последние улучшения в проекте Ribbon for WinForms.

В первом сообщении Бернхард объясняет, что такое инструмент RibbonGenerator и как он генерирует .ribbon-файлы.

Во втором сообщении Бернхард рассказывает, что нужно для того, чтобы использовать проект Ribbon for WinForms в среде Visual Studio 2010 Express.

Что делает инструмент RibbonGenerator?
Он генерирует .ribbon-файлы, которые содержат определения команд и элементов управления и могут использоваться для отображения контрола ленты на форме Windows Forms.

Что из себя представляет RibbonGenerator?
Для генерирования .ribbon-файлов могут использоваться два приложения:

  • Специальный инструмент, запускаемый прямо внутри среды Visual Studio, и
  • Консольное приложение, запускаемое из командной строки


Оба приложения выполняют одинаковые функции.

Как RibbonGenerator генерирует .ribbon-файлы?
Поскольку нет подходящего API, инструмент "всего лишь" выполняет .bat-файл. Это настраиваемый .bat-файл, его содержимое создаётся инструментом. После первого обращения к инструменту файл "template.bat" создаётся в следующей папке: \Users\<username>\AppData\Local\RibbonGenerator.

Вы можете его изменить. Если вы его удалите, он будет заново создан при следующем обращении к инструменту RibbonGenerator.

Что делает этот .bat-файл?
Давайте взглянем на содержимое "template.bat".

"C:\Program Files\Microsoft SDKs\Windows\v7.0\bin\UICC.exe" "{XmlFilename}" "{BmlFilename}" /res:"{RcFilename}"
"C:\Program Files\Microsoft SDKs\Windows\v7.0\bin\rc.exe" /v "{RcFilename}"
cmd /c "("%VS100COMNTOOLS%..\..\VC\bin\vcvars32.bat") && ("%VS100COMNTOOLS%..\..\VC\bin\link.exe" /VERBOSE /NOENTRY /DLL /OUT:"{DllFilename}" "{ResFilename}")"


1. UICC.exe (включённый в состав Windows 7 SDK) генерирует файл определения ресурсов XAML-разметки ленты
2. rc.exe (также включённый в Windows 7 SDK) генерирует .res-файл — файл ресурсов Windows
3. link.exe (включённый в Visual Studio 2010 или Visual C++ 2010 Express) генерирует .dll-файл неуправляемой библиотеки. Это и есть .ribbon-файл, используемый контролом ленты!

Все переменные, заключённые в фигурные скобки, заменяются инструментом. Все создаваемые в процессе работы файлы удаляются после генерирования. Остаётся только .ribbon-файл {ResFilename}.

RibbonGenerator в экспресс-версиях Visual Studio 2010
Да, RibbonGenerator также работает и в экспресс-версиях Visual Studio 2010, но в версии 2.6 библиотеки вам понадобятся некоторые дополнительные приложения, чтобы инструмент заработал.

Требования:

  • Windows 7 SDK
  • Visual C++ 2010 Express
  • Visual C# или Basic 2010 Express


Обратите внимание, что вам нужно установить Visual C++ 2010 Express, поскольку она содержит файл "link.exe", необходимый для генерирования .ribbon-файлов.

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

1. Откройте решение ".\RibbonLib_v2.6\RibbonGenerator\RibbonGenerator.sln", игнорируя все ошибки
2. Скомпилируйте его
3. Установите RibbonGenerator.dll в GAC (Global Assembly Cache — англ. глобальный кэш сборок), используя gacutil.exe из командной строки Visual Studio 2010 (запущенной от имени администратора):

gacutil -i RibbonGenerator.dll


4. Зарегистрируйте специальный инструмент в экспресс-версии Visual Studio 2010. Простейший способ — изменить существующий .reg-файл в папке с исходниками RibbonGenerator (.\RibbonGenerator\RegisterCustomTool_VS2010.reg). Если у вас 64-разрядная операционная система, выберите файл RegisterCustomTool_VS2010_x64.reg.

Давайте посмотрим внутрь второго файла:

Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\VisualStudio\10.0\CLSID\{B64582D9-A489-42F4-BA55-BB6039D82916}]
@="RibbonGenerator"
"InprocServer32"="C:\\WINDOWS\\system32\\mscoree.dll"
"Class"="RibbonGenerator.CustomTool"
"Assembly"="RibbonGenerator, Version=1.0.1.0, Culture=neutral, PublicKeyToken=3cf107c5d7e68b1c"
"ThreadingModel"="Both"

[HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\VisualStudio\10.0\Generators\{164B10B9-B200-11D0-8C61-00A0C91E29D5}\RibbonGenerator]
@="Ribbon Generator"
"CLSID"="{B64582D9-A489-42F4-BA55-BB6039D82916}"
"GeneratesDesignTimeSource"=dword:00000001

[HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\VisualStudio\10.0\Generators\{E6FDF8B0-F3D1-11D4-8576-0002A516ECE8}\RibbonGenerator]
@="Ribbon Generator"
"CLSID"="{B64582D9-A489-42F4-BA55-BB6039D82916}"
"GeneratesDesignTimeSource"=dword:00000001

[HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\VisualStudio\10.0\Generators\{FAE04EC1-301F-11d3-BF4B-00C04F79EFBC}\RibbonGenerator]
@="Ribbon Generator"
"CLSID"="{B64582D9-A489-42F4-BA55-BB6039D82916}"
"GeneratesDesignTimeSource"=dword:00000001


Всё, что нам теперь нужно сделать, — это вставить правильные ключи для экспресс-версий.

Для Visual Studio 2010 (64-разрядная операционная система):

HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\VisualStudio\10.0


Для Visual C# 2010 Express (64-разрядная операционная система):

HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\VCSExpress\10.0


Для Visual Basic 2010 Express (64-разрядная операционная система):

HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\VBExpress\10.0




Заключение
На этом пока всё. Как мы видим, изменения в библиотеке произошли действительно достаточно серьёзные, поэтому пришлось немного прервать знакомство с функциями ленты Windows в .NET-приложениях и написать такую "техническую" статью.

В следующей статье мы, наконец, рассмотрим обещанные четыре элемента управления ленты: флажок (CheckBox), выключатель (ToggleButton), а также специфические контролы ленты DropDownColorPicker и FontControl.


Sgt.Riggs, TheVista.Ru Team,
Январь 2011

Комментарии

Не в сети

Исходные сообщения в блоге Арика Познански, переведённые в этой статье:

Windows Ribbon for WinForms v2.6 Released
Ribbon for WinForms: Quick Start Tutorial (частично)
Ribbon for WinForms: More Details On RibbonGenerator Tool (частично)

Исходные сообщения в блоге Бернхарда Эльбла, переведённые в этой статье:

Quickstart Tutorial: Windows Ribbon for WinForms
RibbonGenerator Details: Windows Ribbon for WinForms
RibbonGenerator for Visual Studio 2010 Express Editions: Windows Ribbon for WinForms

17.01.11 20:16
0
Для возможности комментировать войдите в 1 клик через

По теме

Акции MSFT
420.55 0.00
Акции торгуются с 17:30 до 00:00 по Москве
Все права принадлежат © ms insider @thevista.ru, 2022
Сайт является источником уникальной информации о семействе операционных систем Windows и других продуктах Microsoft. Перепечатка материалов возможна только с разрешения редакции.
Работает на WMS 2.34 (Страница создана за 0.033 секунд (Общее время SQL: 0.015 секунд - SQL запросов: 53 - Среднее время SQL: 0.00028 секунд))
Top.Mail.Ru