|
Программирование >> Автоматически обновляемые приложения
Смена темы Windows ХР Ранее мы уже рассматривали пример, в котором определяли наличие визуальных стилей ХР. Но существует еще сообщение wmthemechanged, которое посылается всем окнам при смене, активации и деактивации визуальных стилей Windows ХР. Таким образом, мы можем отслеживать это сообщение (листинг 5.36), чтобы поймать момент смены тем на компьютере. Для того чтобы переключиться в классический вид, нужно открыть апплет Панели управления Экран, выбрать вкладку Оформление и в списке Окна и кнопки выбрать Классический стиль. Листинг 5.36, Отслеживание смены визуальных тем Windows ХР const int WM THEMECHANGED = 0х031А; protected override void WndProc(ref Message m) { выводим сообщение при смене визуальных стилей if (m.Msg == WM THEMECHANGED) MessageBox.Show ( Стиль изменился! ); base.WndProc (ref m); В .NET Framework 2.0 появился новый класс visuaistyleinformation, в котором содержатся свойства, связанные с визуальными стилями ХР. Среди прочих есть свойство isEnabledByUser, С ПОМОЩЬЮ которого МОЖНО Определить, используется ли визуальный стиль ХР текущим пользователем. Заодно (листинг 5.37) посмотрим и на остальные свойства класса (рис. 5.3). Листинг 5.37. Просмотр свойств класса Visuaistyleinf ormation private void Forml Load(object sender, EventArgs e) { listBoxl.Items.Add(Visuaistyleinformation.Author) ; listBoxl.Items.Add(Visuaistyleinformation.ColorScheme) ; Примечание Пример находится в папке TextForm на прилагаемом диске. listBoxl.Items.Add(VisualStylelnformation.Company); listBoxl.Items.Add(VisualStyleInformation.Copyright); listBoxl.Items.Add(VisualStyleInformation.Description); listBoxl.Items.Add(VisualStyleInformation.DisplayName); listBoxl.Items.Add(VisualStylelnformation.IsEnabledByUser) !;Грппа дизайна Майкрософт NormalCoior Корпорация Майкрософт i fC) Корпорация Майкрософт, 2CG0 Стиль Оформления япя Windows ХР iMicrosofti Стиль Windows ХР True Рис. 5.3. Просмотр свойств класса VisualStylelnformation Примечание Пример находится в папке VisualStyleInf© на прилагаемом диске. Как форме получать уведомления о нажатии кнопок, когда фокус ввода находится в каком-либо элементе управления формы? Это элементарная задача, она решается установкой свойства формы Form.KeyPreview В значение true. Для чего ЭТО нужно? Например, можно создать так называемое пасхальное яйцо. Предположим, мы зашиваем в программу какое-нибудь кодовое слово. Если пользователь нажмет клавиши в нужной последовательности, то на экран выпрыгивает какое-нибудь секрет- public static string TestString = ; private void Forml KeyPress(object sender, KeyPressEventArgs e) { const string EASTER EGG = ТЕШД ; TestString = TestString + e.KeyChar.ToString().ToUpper(); this.Text = TestString; if (EASTER EGG.Substring(0, TestString.Length) != TestString) { TestString = ; else if (EASTER EGG == TestString) { MessageBox.Show( Возьми с полки пирожок ) TestString = ; Примечание Пример находится в папке EasterEgg на прилагаемом диске. Как получить список всех открытых форм, принадлежащих приложению? Вам необходимо получить доступ ко всем открытым формам, которые принадлежат вашему приложению? В .NET Framework 2.0 появилось свойство OpenForms, которое ОТНОСИТСЯ К классу Application. Вам нужно пройти в цикле через объект FormCollection ДЛЯ получения свойства OpenForms. Почитайте документацию.- ное окно с фотографией. Для простоты примера ограничимся стандартным MessageBox (ЛИСТИНГ 5.38). i Листинг 5.38. Использование свойства KeyPreview
|
© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки. |