Библиотека knigago >> Компьютеры и Интернет >> Программы >> Delphi. Трюки и эффекты


СЛУЧАЙНЫЙ КОММЕНТАРИЙ

# 2020, книга: Вторжение
автор: Роберт Уилли

«Вторжение» Роберта Уилли — захватывающий роман в жанре научной фантастики, который держит читателей в напряжении до самого конца. История вращается вокруг нашествия инопланетян на Землю и ее последствий для выживших. Уилли мастерски создает атмосферу паники, страха и хаоса, когда инопланетные захватчики высаживаются на нашу планету. Невероятная технология пришельцев и их безжалостная тактика сражений захватывают воображение и держат читателей на грани их мест. В книге представлен...

СЛУЧАЙНАЯ КНИГА

Королевская Академия Магии. Неестественный Отбор. Наталья Самсонова
- Королевская Академия Магии. Неестественный Отбор

Жанр: Любовная фантастика

Год издания: 2018

Серия: Келестин и Кальдоранн (Невеста тёмного колдуна)

Александр Анатольевич Чиртик , Валерий Викторович Борисок , Юрий Иванович Корвель - Delphi. Трюки и эффекты

Delphi. Трюки и эффекты
Книга - Delphi. Трюки и эффекты.  Александр Анатольевич Чиртик , Валерий Викторович Борисок , Юрий Иванович Корвель  - прочитать полностью в библиотеке КнигаГо
Название:
Delphi. Трюки и эффекты
Александр Анатольевич Чиртик , Валерий Викторович Борисок , Юрий Иванович Корвель

Жанр:

Программы

Изадано в серии:

неизвестно

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

неизвестно

Год издания:

-

ISBN:

неизвестно

Отзывы:

Комментировать

Рейтинг:

Поделись книгой с друзьями!

Помощь сайту: донат на оплату сервера

Краткое содержание книги "Delphi. Трюки и эффекты"

«Delphi. Трюки и эффекты», как и все издания данной серии, адресована тем, кто хочет научиться делать с помощью уже знакомых программных пакетов новые, интересные вещи. В первой части книги многое говорится о среде разработки Delphi (самых последних версий) и программировании на языке Object Pascal. Благодаря этому издание подходит и новичкам, и начинающим программистам. Вторая (основная) часть книги описывает удивительные возможности, скрытые в языке, и на примерах учит читателя программистским фокусам – от «мышек-невидимок» и «непослушных окон» до воспроизведения МРЗ и управления офисными программами Word и Excel из приложений Delphi. Купив эту книгу, вы пройдете непростой путь к вершинам программистского мастерства весело и интересно.

Читаем онлайн "Delphi. Трюки и эффекты" (ознакомительный отрывок). [Страница - 3]

способ привлечение внимания к окну приложения. Он базируется на использовании API-функции SetForegroundWindow. Функция принимает один единственный параметр – дескриптор окна. Если выполняется ряд условий, то окно с заданным дескриптором будет выведено на передний план и пользовательский ввод будет направлен в это окно. Функция возвращает нулевое значение, если не удалось сделать окно активным.

В приведенном ниже примере окно активизируется при каждом срабатывании таймера (листинг 1.4).

...
Листинг 1.4.

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

procedure TForm1.Timer1Timer(Sender: TObject);

begin

SetForegroundWindow(Handle);

end;

В операционных системах старше Windows 95 и Windows NT 4.0 введен ряд ограничений на действие функции SetForegroundWindow. Так, приведенный выше пример как раз и является одним из случаев недружественного использования активизации окна, но это всего лишь пример.

Чтобы активизировать окно, процесс должен быть не фоновым либо должен иметь право устанавливать активное окно, назначенное ему другим процессом с таким правом, и т. п. Все возможные нюансы в пределах одного трюка рассматривать не имеет смысла. Стоит отметить, что в случае, когда окно не может быть активизировано, автоматически вызывается функция FlashWindow для окна приложения (заставляет мигать кнопку этого приложения на Панели задач). Поэтому даже при неудачном вызове функции SetForegroundWindow приложение, нуждающееся во внимании, не останется незамеченным.

1.2. Окно приложения

Обратите внимание на то, что название приложения, указанное на кнопке, расположенной на Панели задач, совпадает в названием проекта (можно установить на вкладке Application диалога Project options, вызываемого командой меню Project → Options), но не с заголовком главной формы приложения. Взгляните на приведенный ниже код, который можно найти в DPR-файле (несущественная часть опущена).

...
program…

begin

Application.Initialize;

Application.CreateForm(TForm1, Form1);

Application.Run;

end.

В конструкторе класса TApplication, экземпляром которого является глобальная переменная Application (ее объявление находится в модуле Forms), происходит неявное создание главного окна приложения. Заголовок именно этого окна отображается на Панели задач (кстати, этот заголовок можно также изменить с помощью свойства Title объекта Application). Дескриптор главного окна приложения можно получить при помощи свойства Handle объекта Application.

Главное окно приложения делается невидимым (ему задается нулевая высота и ширина), чтобы создавалась иллюзия его отсутствия и можно было считать, что главной является именно создаваемая первой форма.

Для подтверждения вышесказанного можно отобразить главное окно приложения, используя следующий код (листинг 1.5).

...
Листинг 1.5. Показываем окно приложения

procedure TForm1.Button1Click(Sender: TObject);

begin

SetWindowPos(Application.Handle, 0, 0, 0, 200, 100,

SWP_NOZORDER or SWP_NOMOVE);

end;

В результате ширина окна станет равной 200, а высота – 100, и мы сможем посмотреть на главное окно. Кстати, можно заметить, что при активизации этого окна (например, щелчке кнопкой мыши на заголовке) фокус ввода немедленно передается созданной первой, то есть главной, форме.

Теперь должно стать понятно, почему не мигала кнопка приложения при использовании функций FlashWindow или FlashWindowEx. Недостаток этот можно легко устранить, например, следующим образом (листинг 1.6).

...
Листинг 1.6.

Мигание кнопки приложения на Панели задач

procedure TForm1.Button2Click(Sender: TObject);

var

fl: FLASHWINFO;

begin

fl.cbSize:= SizeOf(fl);

fl.hwnd:= Application.Handle;

fl.dwFlags:= FLASHW_ALL;

fl.uCount:= 10;

fl.dwTimeout:= 200;

FlashWindowEx(fl);

end;

В данном случае будет одновременно инвертироваться заголовок окна приложения. Убедиться в этом можно, предварительно применив листинг 1.5. Наконец, чтобы добиться одновременного мигания кнопки приложения на Панели задач и заголовка формы (произвольной, а не только главной), можно применить листинг 1.7.

...
Листинг 1.7.

Мигание кнопки приложения и инверсия заголовка формы

procedure TForm1.Button3Click(Sender: TObject);

var

fl: FLASHWINFO;

begin

//Мигание кнопки

fl.cbSize:= SizeOf(fl);

fl.hwnd:= Application.Handle;

fl.dwFlags:= FLASHW_TRAY;

fl.uCount:= 10;

fl.dwTimeout:= 200;

FlashWindowEx(fl);

//Инверсия заголовка

fl.cbSize:= SizeOf(fl);

fl.hwnd:= Handle;

fl.dwFlags:= FLASHW_CAPTION;

fl.uCount:= 10;

fl.dwTimeout:= 200;

FlashWindowEx(fl);

end;

В данном случае инвертируется заголовок формы Forml. Кнопка на Панели задач может не только мигать, но и, например, быть скрыта или показана, когда в этом есть необходимость. Так, для скрытия --">

Оставить комментарий:


Ваш e-mail является приватным и не будет опубликован в комментарии.