C++ Builder: Как привлечь внимание к окну?

Порою необходимо привлекать внимание пользователя к окну (например, чтоб отметить завершение какого-то процесса или же сообщить об ошибке). Для этого, чаще всего, создают мигающий заголовок окна. Его, между прочим, проще всего реализовать при помощи функции FlashWindow.

Эта функция инвертирует активное состояние окна, заданное через дескриптор в первом параметре. Собственно говоря, именно измененеие состояния между false и true дает в результате эффект мигания.

Для того, чтоб все было пучком необходимо установить компонент Timer, находящийся на вкладке System.

Код программы приведен ниже.

#include "Unit1.h"
//--------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
bool Flash; //объявляем переменную
//--------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
{
}
//--------------------------------------------------------------
void __fastcall TForm1::Timer1Timer(TObject *Sender) //событие таймера
{
FlashWindow(Form1->Handle,Flash); //вызываем функцию
FlashWindow(Application->Handle,Flash); 
Flash=!Flash; //меняем значение переменной
}
//--------------------------------------------------------------

2 comments on “C++ Builder: Как привлечь внимание к окну?

  1. А как остановить вспышку ( ну например если таймер больше 1000 то отключить вспышку)

    1. В свойствах таймера ставите нужный интервал (INTERVAL) — он задается в милисекундах, 1000 — это одна секунда. А потом в обработчике событий таймера пишете Flash=!Flash;, т.е. вот так:

      1
      2
      3
      4
      
      void __fastcall TForm1::Timer1Timer(TObject *Sender)
      {
      Flash=!Flash;
      }

      Я не проверяла, но должно работать )))

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *