|
Программирование >> Управление учетными записями
Приложение В. 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();
|
© 2006 - 2024 pmbk.ru. Генерация страницы: 0.001
При копировании материалов приветствуются ссылки. |