Delphi. Трюки и эффекты. Александр Чиртик
Чтение книги онлайн.

Читать онлайн книгу Delphi. Трюки и эффекты - Александр Чиртик страница 2

Название: Delphi. Трюки и эффекты

Автор: Александр Чиртик

Издательство:

Жанр: Программы

Серия:

isbn: 978-5-911-80219-6

isbn:

СКАЧАТЬ функция FlashWindowEx в качестве дополнительного параметра (кроме дескриптора окна) принимает структуру FLASHWINFO, заполняя поля которой, можно настроить параметры мигания кнопки приложения и/или заголовка окна.

      В табл. 1.1 приведено описание полей структуры FLASHWINFO.

Таблица 1.1. Поля структуры FLASHWINFO

      Значение параметра dwFlags формируется из приведенных ниже флагов с использованием операции побитового ИЛИ:

      • FLASHW_CAPTION – инвертирует состояние заголовка окна;

      • FLASHWTRAY—заставляет мигать кнопку на Панели задач;

      • FLASHW_ALL – сочетание FLASHW_CAPTION И FLASHW_TRAY;

      • FLASHW_TIMER – периодическое изменение состояния заголовка окна и/или кнопки на Панели задач вплоть до того момента, пока фyнкцияFlashWindowEx не будет вызвана с флагом FLASHW_STOP;

      • FLASHW_TIMERNOFG – периодическое изменение состояния заголовка окна и/или кнопки на Панели задач до тех пор, пока окно не станет активным;

      • FLASHWSTOP – восстанавливает исходное состояние окна и кнопки на Панели задач.

      Далее приведены два примера использования функции FlashWindowEx.

      В первом – состояние заголовка окна и кнопки на Панели задач изменяется десять раз каждые 0,2 секунды (листинг 1.2).

Листинг 1.2. Десятикратная инверсия заголовка окна

      procedure TForm1.cmbInverse10TimesClick(Sender: TObject);

      var

      fl: FLASHWINFO;

      begin

      fl.cbSize:= SizeOf(fl);

      fl.hwnd:= Handle;

      fl.dwFlags:= FLASHW_CAPTION or FLASHW_TRAY; // аналогично

      FLASHW_ALL

      fl.uCount:= 10;

      fl.dwTimeout:= 200;

      FlashWindowEx(fl);

      end;

      Второй пример демонстрирует использование флаговРЬАЗШ_Т1МЕРч и FLASHW_STOP для инверсии заголовка окна в течение заданного промежутка времени (листинг 1.3).

Листинг 1.3. Инверсия заголовка окна в течение определенного промежутка времени

      //Запуск процесса периодической инверсии заголовка

      procedure TForm1.cmbFlashFor4SecClick(Sender: TObject);

      var

      fl: FLASHWINFO;

      begin

      fl.cbSize:= SizeOf(fl);

      fl.hwnd:= Handle;

      fl.dwTimeout:= 200;

      fl.dwFlags:= FLASHW_ALL or FLASHW_TIMER;

      fl.uCount:= 0;

      FlashWindowEx(fl);

      Timer1.Enabled:= True;

      end;

      //Остановка инверсии заголовка

      procedure TForm1.Timer1Timer(Sender: TObject);

      var

      fl: FLASHWINFO;

      begin

      fl.cbSize:= SizeOf(fl);

      fl.hwnd:= Handle;

      fl.dwFlags:= FLASHW_STOP;

      FlashWindowEx(fl);

      Timer1.Enabled:= False;

      end;

      В данном примере подразумевается использование таймера, срабатывающего каждые четыре секунды. Таймер первоначально неактивен. Конечно, можно было бы не использовать его, а просто посчитать количество инверсий, попадающих в нужный интервал времени (в данном случае четыре секунды), и задать его в поле uCount. Но приведенный пример рассчитан именно на демонстрацию использования флагов FLASHW_TIMERH flashw_stop.

      Активизация окна

      Рассмотрим другой, гораздо более гибкий способ привлечение внимания к окну приложения. Он базируется СКАЧАТЬ