Windows Vista Bridge Sample Library - управляемые API для Windows 7
У многих читателей возникает вопрос, почему мы так часто говорим о Windows Vista в блоге Windows 7 для разработчиков? Все очень просто: мы говорим о
Ни для кого не секрет, что операционная система Windows написана на С и С++, и, как следствие, использует наследственную программную модель, известную как WinAPI или Win32 API. Windows API представляет собой либо чистый C API или COM-based API. Это делает использование API очень простым и удобным для тех, кто программирует на C или C++. Но что мы можем предложить разработчикам управляемого кода? Есть ли какие-либо API управляемого кода в Windows Vista или Windows 7?
.NET Framework предлагает простую и понятную программную модель, ориентированную на Windows-клиентов (веб, серверы, мобильные устройства). А в сочетании с набором инструментов и библиотек .NET Framework является эффективной и продуктивной средой для создания клиентских Windows-приложений. Одно из преимуществ .NET Framework состоит в том, что эта среда основана на библиотеках, поэтому кто угодно может добавлять библиотеки для расширения функциональности. В состав .NET Framework по умолчанию входит масса библиотек, которые расширяют собственные Windows API, делая разработку приложений для Windows независимо от ее версии - XP, Vista или 7 - намного более простым занятием, чем при использовании Windows API.
Хорошим примером является компонент (так называют библиотеки в .NET) .NET WinForms, который содержит набор интерфейсных классов, которые используют традиционный Win32 API для создания и обработки окон в Windows. Абстрагируя встроенный API, .NET WinForms гарантирует, что нам не нужно напрямую работать с указателями (HWND), обработчиками (HINSTANCE) или другими собственными Windows API конструкциями. В противном случае код выглядел бы следующим образом:
Да, WinForms основан на HWND. Разработчики на .NET могут легко получить доступ к HWND, используя свойство класса System.Windows.Interop в компоненте WindowsBase (WindowsBase.dll).
Но несмотря на всесторонние связи .NET Framework, данная среда исполнения не предлагает управляемые API для всех собственных Windows API. Поэтому у разработчиков управляемого кода нет никаких управляемых API для работы с UAC API, Restart Manager API или новым Windows Vista Search API. Это всего лишь несколько примеров собственных Windows API, для работы с которыми в .NET Framework нет каких-либо интерфейсов, но которые играют ключевую роль при развертывании некоторых приложений в Windows.
Одной из областей, в которых VBSL может облегчить труд разработчиков - это диалоговые окна. Windows Vista предлагает вам множество диалоговых окон для разных целей. Например, если вы используете Windows Vista, то вам, вероятно, знаком следующий формат пользовательского интерфейса:
или такой:
Оба представленных выше диалоговых окна основаны на командных ссылках. С помощью
Вот пример типичного набора командных ссылок:
Командные ссылки похожи на
Используя Windows Vista Bridge Sample Library, вы можете создать симпатичные диалоги Task Dialog, которые будут выглядеть следующим образом:
Диалог Task Dialog является объектом Vista Bridge Sample Library, Microsoft.SDK.Samples.VistaBridge.Library.TaskDialog и не имеет свойств времени. Именно поэтому вы должны настроить диалоговое окно. Но это просто и мы докажем это на следующем примере.
Во-первых, создайте Task Dialog:
TaskDialog td = new TaskDialog();
После чего начните настраивать его атрибуты - заголовок, инструкции, основную область и основную иконку:
//main content section
td.Caption = "Fancy \"Vista\" Task Dialog on Win 7";
td.Instruction = "Your instructions go here";
td.Content = "Download Windows Vista Bridge Library";
td.MainIcon = TaskDialogStandardIcon.Information;
Теперь добавьте опциональный нижний колонтитул и иконку:
td.FooterText = "Footer text goes here"; t
d.FooterIcon = TaskDialogStandardIcon.Shield;
Но самое интересное начнется, когда вы начнете разбираться с TaskDialog.Controls - коллекцией элементов управления TaskDialog -DialogControlCollection<TaskDialogControl>, r которому вы можете добавить объект TaskDialogControl:
td.Controls.Add(new TaskDialogCommandLink("new tdcl", "main text here"
В дополнение к добавлению командных ссылок, Task Dialog также может выводить набор событий, которые позволят вам манипулировать и взаимодействовать с пользователем во время его работы с диалоговым окном. Объекты Task Dialog используют событие Tick для работы с индикатором выполнения задачи, Open и Closing, а также HelpInvoked и HyperLinkClick для управления пользовательскими запросами о помощи и информации.
//events that you can catch
td.Tick += new EventHandler<TaskDialogTickEventArgs>(OnMyTick);
td.Opened += new EventHandler(OnOpenInvoked);
td.HelpInvoked += new EventHandler(OnHelpInvoked);
Также вы можете добавить компоненты Progress Bar, CheckBox и Radio Button. По сути, Windows Vista Task Dialogs API является мини-версией среды исполнения Dialog, который позволяет вам сохранить много времени при работе с мастерами и диалоговыми окнами.
Код вышеприведенного примера:
1: td = new TaskDialog();
2:
3: //
4: td.StartupLocation = TaskDialogStartupLocation.CenterOwner;
5: td.Cancelable = true;
6:
7: //main content section
8: td.Caption = "Fancy \"Vista\" Task Dialog on Win 7";
9: td.Instruction = "Your instructions go here";
10: td.Content = "Download Windows Vista Bridge Library Sample";
11: td.MainIcon = TaskDialogStandardIcon.Information;
12:
13: //setting footer content
14: td.FooterText = "Footer text goes here";
15: td.FooterIcon = TaskDialogStandardIcon.Shield;
16:
17: //Command Links
18: td.Controls.Add(new TaskDialogCommandLink("new tdcl", "Main text here", "Instruction"));
19: td.Controls.Add(new TaskDialogCommandLink
("Another new tdcl", " Another main text here", "More instruction"));
20:
21: //Expanding
22: td.ExpansionMode = TaskDialogExpandedInformationLocation.ExpandContent;
23: td.ExpandedControlText = "Expanded Control Text";
24: td.ExpandedText = "This is some expanded text, only visible when expanded";
25: td.CollapsedControlText = "Collapsed Control Text";
26: td.HyperlinksEnabled = true;
27:
28: //Prograss Bar
29: TaskDialogProgressBar tdpb = new TaskDialogProgressBar();
30: tdpb.Name = "myPrograssBar1";
31: tdpb.Minimum = 0;
32: tdpb.Maximum = 100;
33: td.ProgressBar = tdpb; //adding to main Task Dialog
34:
35: // Check Box
36: td.CheckBoxChecked = true;
37: td.CheckBoxText = "This is a checkbox, we can register to listen for its events";
38:
39: //events that you can catch
40: td.Tick += new EventHandler<TaskDialogTickEventArgs>(OnMyTick);
41: td.Opened += new EventHandler(OnOpenInvoked);
42: td.HelpInvoked += new EventHandler(OnHelpInvoked);
43: td.Closing += new EventHandler<TaskDialogClosingEventArgs>(OnDialogClosing);
44: td.HyperlinkClick += new EventHandler<TaskDialogHyperlinkClickedEventArgs>(td_HyperlinkClick);
45:
46: td.Show();
Источник:
Перевод: Zloy Kak Pё$
Комментарии
С Task Dialogs уже давно всё понятно... Хотелось бы увидеть статью о создании Glass-формы на C# с Glow-эффектом для текста, а ещё как сделать Aero Wizard на том же C#. Zloy Kak Pё$, сможете что-нибудь подобное найти или написать? Я сколько ни искал, никакой конкретики о Glow и об Aero Wizard.
По теме
- Федеративный поиск в Windows 7
- Программируем панель задач Windows 7: панель миниатюр
- Использование сенсоров в приложении: реализация в managed-коде (ч.1)
- Использование сенсоров в приложении: реализация в native-коде (ч.1)
- Я тебя чувствую: использование платформы Sensor в Windows 7
- Доступны записи с Windows 7 PDC Boot Camp
- Fishbowl для Facebook с использованием новой панели задач Windows 7
- Программируем для Windows 7 в Visual Studio 2010
- Новая версия Windows API Code Pack
- Программирование служб Windows 7 с триггерами (ч.2)