Программирование >>  Управление учетными записями 

1 2 [ 3 ] 4 5 6


Приложение В. Windows Vista и Windows Server 2008 1721

С помощью библиотеки Vista Bridge родной API-вызов TaskDialogIndirect() помещается в оболочку PInvoke:

[DllImport(ExternDll.ComCtl32, CharSet = CharSet.Auto, SetLastError = true)] internal static extern HRESULT TaskDialogIndirect( [In] NativeMethods.TASKDIALOGCONFIG pTaskConfig,

[Out] out int pnButton, [Out] out int pnRadioButton, [Out] out bool pVerificationFlagChecked);

Первый параметр TaskDialogIndirect() определен как класс TASKDIALOGCONFIG, отображаемый на ту же структуру, что и вызов родного API:

[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Auto, Pack = 4)]

internal class TASKDIALOGCONFIG

internal uint cbSize; internal IntPtr hwndParent; internal IntPtr hInstance; internal TASKDIALOG FLAGS dwFlags;

internal TASKDIALOG COMMON BUTTON FLAGS

[MarshalAs(UnmanagedType.LPWStr)] internal string pszWindowTitle; internal TASKDIALOGCONFIG ICON UNION MainIcon; [MarshalAs(UnmanagedType.LPWStr)] internal string pszMainInstruction; [MarshalAs(UnmanagedType.LPWStr)]

internal string pszContent; internal uint cButtons; internal IntPtr pButtons; internal int nDefaultButton; internal uint cRadioButtons; internal IntPtr pRadioButtons; internal int nDefaultRadioButton; [MarshalAs(UnmanagedType.LPWStr)]

internal string pszVerificationText;

[MarshalAs(UnmanagedType.LPWStr)] internal string pszExpandedInformation; [MarshalAs(UnmanagedType.LPWStr)]

internal string pszExpandedControlText;

[MarshalAs(UnmanagedType.LPWStr)] internal string pszCollapsedControlText; internal TASKDIALOGCONFIG ICON UNION FooterIcon; [MarshalAs(UnmanagedType.LPWStr)]

internal string pszFooter;

internal PFTASKDIALOGCALLBACK pfCallback; internal IntPtr lpCallbackData;

internal uint cxWidth;

dwCommonButtons;

Указатель на структуры TASKDIALOG BUTTON

Указатель на структуры TASKDIALOG BUTTON

Общедоступный класс из Vista Bridge, используемый для отображения диалогов задач - это TaskDialog. Чтобы отобразить пример диалога, должен быть вызван только статический метод Show() . Пример такого диалога показан на рис. В.6.

TaskDialog.Show( Simple Task Dialog );


Рис. В.6. Простой диалог задач



1722 Часть VII. Приложения

Дополнительные свойства класса TaskDialog - Caption, Content, StandardButtons и MainIcon - устанавливаются отдельно. Результат можно увидеть на рис. В.7.

TaskDialog dlg1 = new TaskDialog(); dlg1.Caption = Title ; dlg1.Content = Some Information ;

dlg1.StandardButtons = TaskDialogStandardButtons.OkCancel; dlg1.MainIcon = TaskDialogStandardIcon.Information; dlg1.Show();


Рис. В.7. Диалог задач с дополнительнкми возможностями

Для диалога задач вы можете установить пиктограмму, которая сначала была показана в командных ссылках. Также вы можете расширить ее, установив свойство ExpansionMode. Перечислением TaskDialogExpandedInformationLocation вы можете специфицировать, что либо содержимое, либо нижний колонтитул должен быть расширен. На рис. В.8 показан диалог задач в свернутом состоянии. На рис. В.9 - он же в развернутом режиме.

TaskDialog dlg2 = new TaskDialog(); dlg2.Caption = Title ; dlg2.Content = Some Information ;

dlg2.StandardButtons = TaskDialogStandardButtons.YesNo; dlg2.MainIcon = TaskDialogStandardIcon.Shield;

dlg2.ExpandedText = Additional Text ; dlg2.ExpandedControlText = More information ; dlg2.CollapsedControlText = Less information ;

dlg2.ExpansionMode = TaskDialogExpandedInformationLocation.ExpandContent; dlg2.FooterText = Footer Information ; dlg2.FooterIcon = TaskDialogStandardIcon.Information;

dlg2.Show();


Рис. В.8. Диалог задач в свернутом состоянии


Рис. В.9. Диалог задач в развернутом состоянии



Приложение В. Windows Vista и Windows Server 2008 1723

Диалог задач также содержит и другие элементы управления. В следующем фрагменте кода создается диалог задач, который содержит два переключателя, командную ссылку и элемент типа прямоугольника. Вы уже видели командные ссылки в предыдущем разделе; на самом деле, командные ссылки очень часто используются внутри диалогов задач. На рис. В.10 показан диалог задач с элементами управления в области содержимого. Конечно, вы также можете скомбинировать расширенную область с элементами управления.

new TaskDialogRadioButton();

= new TaskDialogRadioButton();

= new TaskDialogCommandLink();

TaskDialogRadioButton radio1 radio1.Name = radio1 ; radio1.Text = One ; TaskDialogRadioButton radio2 radio2.Name = radio2 ;

radio2.Text = Two ; TaskDialogCommandLink commandLink commandLink.Name = link1 ; commandLink.ShowElevationIcon = true; commandLink.Text = Information ; commandLink.Instruction = Sample Command Link ; TaskDialogMarquee marquee = new TaskDialogMarquee(); marquee.Name = marquee ;

marquee.State = TaskDialogProgressBarState.Normal;

TaskDialog dlg3 = new TaskDialog(); dlg3.Caption = Title ;

dlg3.Instruction = Sample Task Dialog ;

dlg3.Controls.Add(radio1); dlg3.Controls.Add(radio2); dlg3.Controls.Add(commandLink); dlg3.Controls.Add(marquee);

dlg3.Show();


Рис. В.10. Диалог задач с элементами управления в области содержимого

Файловые диалоги

Диалоги открытия и сохранения файлов также изменились. На рис. В.11 показан традиционный диалог открытия файла, который имеет класс-оболочку Windows Forms System.Windows.Forms.OpenFileDialog и класс-оболочку WPF из сборки PresentationFramework: Microsoft.Win32.OpenFileDialog.

Новый диалог Windows Vista представлен на рис. В.12. Он содержит в себе панели Navigation (Навигация), Details (Подробности) и Preview (Предварительный просмотр), которые могут быть сконфигурированы через пункт меню OrganizeLayout (ОрганизоватьКомпоновка). Этот диалог также содержит функциональность поиска и является полностью настраиваемым. В библиотеке Vista Bridge этот диалог имеет класс-оболочку CommonOpenFileDialog.

CommonOpenFileDialog dlg = new CommonOpenFileDialog(); dlg.ShowDialog();



1 2 [ 3 ] 4 5 6

© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки.
Яндекс.Метрика