Разработка программы предварительного просмотра заставки с помощью Delphi
Организация и редактирование: China asp
---- Все знают роль заставки Windows, и новая заставка становится все более и более красивой. Если вы выберете свойства в контекстном меню рабочего стола Win95, появится интерфейс настроек монитора, и там. это вкладка для настройки хранителя экрана.
---- На экране этой страницы есть шаблон монитора. Если вы выберете заставку, поставляемую с Win95, заставка автоматически запустится на этом маленьком «мониторе», и вы сможете напрямую увидеть эффект работы. Эта функция значительно облегчает выбор хранителей экрана. Это новый интерфейс Win95 для хранителей экрана: функция предварительного просмотра.
---- Большинство недавно выпущенных хранителей экрана в настоящее время поддерживают этот интерфейс.
---- С момента своего создания одновременно можно запускать только одну заставку, и одновременно нельзя запускать несколько экранов. Однако введение интерфейса предварительного просмотра позволило просматривать несколько заставок одновременно. В то же время эта статья покажет читателям, как разработать такую программу с помощью Delphi.
---- 1. Интерфейс предварительного просмотра заставки
---- Интерфейс предварительного просмотра заставки очень прост в использовании. Это достигается путем передачи параметров командной строки в заставку. Формат параметров командной строки:
---- screensaver.exe /p #####
---- Где ##### — десятичное представление допустимого дескриптора окна.
---- Мы можем назвать это окно окном предварительного просмотра.
----Фактически, заставки, поддерживающие интерфейс предварительного просмотра, создают свои собственные окна как подокна окна предварительного просмотра для реализации функции предварительного просмотра.
---- 2. Расположение экрана
---- Окно нашей программы разделено на 3 части, которые имеют форму перевернутой булавки. В левой верхней части перечислены все доступные заставки, в правой верхней части перечислены все просмотренные заставки, а в нижней части. конечно окно предварительного просмотра.
---- При реализации с помощью Delphi сначала поместите два компонента TPanel в форму, Panel1 выравнивается по верху, Panel2 предназначена для заполнения пользовательской области, затем поместите компонент TFileListBox и компонент TListBox в Panel1, FileListBox1 выравнивается по левому краю, ListBox1 заполняет пользовательскую область.
---- Таким образом, FileListBox1 — это список заставок, ListBox1 — список предварительного просмотра, а Panel2 — окно предварительного просмотра.
---- 3. Список хранителей экрана.
---- Установите для свойства Mask FileListBox1 значение «*.scr», которое является расширением заставки.
---- Установите FileListBox1.directory в системный каталог Windows GetSystemDirectory в методе FormCreate;
---- 4. Предварительный просмотр заставки.
----Запустите заставку в методе FileListBox1DblClick и передайте ей дескриптор окна Panel2.
---- WinExec(pchar(FileListBox1.FileName + '/p' + inttostr(Panel2.handle)), SW_Show);
---- Как насчет запуска программы КРУТО!
---- 5. Добавьте новые функции: скрыть/показать/закрыть.
----Добавлены 2 функции: используются для обновления ListBox1.
функция EnumPROc(
h : HWND;//дескриптор дочернего окна
l : целое число // значение, определенное приложением
): логическое значение;stdcall;
вар
buf: массив [0..255] символов;
начинать
GetWindowText(h, buf, sizeof(buf)- 1);
если iswindowvisible(h), то
Form1.ListBox1.items.add(' ' +strpas(buf) + ' : ' + inttostr(h))
еще
Form1.ListBox1.items.add('-' +strpas(buf) + ' : ' + inttostr(h));
Результат: = правда;
конец;
процедура TForm1.Fresh1;
начинать
ListBox1.очистить;
enumChildwindows(Panel2.handle,
TFNWndEnumProc(@enumproc), 0);
конец;
---- Добавьте всплывающее меню Popupmenu1, 3 пункта меню: «Показать, Скрыть, Закрыть» и укажите ListBox1.popupmemu на Popupmenu1.
----Функция обработки Hide:
процедура TForm1.Hide1Click(Отправитель: TObject);
вар
ч: целое число;
с: строка;
начинать
если ListBox1.itemindex = -1, то выйти;
s := Listbox1.items[ListBox1.itemindex];
h := strtoint(copy(s, pos(':', s) + 1, length(s)));
ShowWindow(ч, SW_HIDE);
Свежий1;
конец;
Функция-обработчик для Show:
процедура TForm1.Show1Click(Отправитель: TObject);
вар
ч: целое число;
с: строка;
начинать
если ListBox1.itemindex = -1, то выйти;
s := Listbox1.items[ListBox1.itemindex];
h := strtoint(copy(s, pos(':', s) + 1, length(s)));
ShowWindow(ч, SW_SHOW);
Свежий1;
конец;
Функция-обработчик для Close:
процедура TForm1.Close1Click(Отправитель: TObject);
вар
ч: целое число;
с: строка;
начинать
если ListBox1.itemindex = -1, то выйти;
s := Listbox1.items[ListBox1.itemindex];
h := strtoint(copy(s, pos(':', s) + 1, length(s)));
PostMessage(ч, WM_QUIT, 0, 0);
Свежий1;
конец;
---- Эта программа была отлажена под Delphi 3.0 и ее можно скомпилировать с помощью Delphi 1.0/2.0.
----Полная процедура выглядит следующим образом:
блок Unit1;
интерфейс
использует
Windows, сообщения, SysUtils, классы, графика, элементы управления, формы, диалоги, StdCtrls, FileCtrl, ExtCtrls, меню;
тип
ТФорм1 = класс (ТФорма)
Панель1: ТПанель;
Панель2: ТПанель;
FileListBox1: TFileListBox;
Список1: TListBox;
ПопупМеню1: ТПопупМеню;
Скрыть1: TMenuItem;
Показать1: TMenuItem;
Закрыть1: TMenuItem;
процедура FormCreate (Отправитель: TObject);
процедура FileListBox1DblClick (Отправитель: TObject);
процедура Hide1Click (Отправитель: TObject);
процедура Show1Click (Отправитель: TObject);
процедура Close1Click (Отправитель: TObject);
частный
{Частные заявления}
общественный
{Публичные заявления}
процедура Fresh1;
конец;
вар
Форма1: ТФорм1;
выполнение
{$R *.DFM}
функция EnumProc(
h : HWND;//дескриптор дочернего окна
l : целое число // значение, определенное приложением
): логическое значение;stdcall;
var buf: массив [0..255] символов;
начинать
GetWindowText(h, buf, sizeof(buf)- 1);
если iswindowvisible(h), то
Form1.ListBox1.items.add(' ' +strpas(buf) + ' : ' + inttostr(h))
еще
Form1.ListBox1.items.add('-' +strpas(buf) + ' : ' + inttostr(h));
Результат: = правда;
конец;
процедура TForm1.Fresh1;
начинать
ListBox1.очистить;
enumChildwindows(Panel2.handle, TFNWndEnumProc(@enumproc), 0);
конец;
процедура TForm1.FormCreate(Отправитель: TObject);
var buf: массив [0..256] символов;
начинать
GetSystemDirectory(buf, sizeof(buf) - 1);
FileListBox1.directory := strpas(buf);
ListBox1.popupmenu := Popupmenu1;
конец;
процедура TForm1.FileListBox1DblClick(Отправитель: TObject);
начинать
WinExec(pchar(FileListBox1.FileName + '/p' + inttostr(Panel2.handle)), SW_Show);
Свежий1;
конец;
процедура TForm1.Hide1Click(Отправитель: TObject);
вар
ч: целое число;
с: строка;
начинать
если ListBox1.itemindex = -1, то выйти;
s := Listbox1.items[ListBox1.itemindex];
h := strtoint(copy(s, pos(':', s) + 1, length(s)));
ShowWindow(ч, SW_HIDE);
Свежий1;
конец;
процедура TForm1.Show1Click(Отправитель: TObject);
вар
ч: целое число;
с: строка;
начинать
если ListBox1.itemindex = -1, то выйти;
s := Listbox1.items[ListBox1.itemindex];
h := strtoint(copy(s, pos(':', s) + 1, length(s)));
ShowWindow(ч, SW_SHOW);
Свежий1;
конец;
процедура TForm1.Close1Click(Отправитель: TObject);
вар
ч: целое число;
с: строка;
начинать
если ListBox1.itemindex = -1, то выйти;
s := Listbox1.items[ListBox1.itemindex];
h := strtoint(copy(s, pos(':', s) + 1, length(s)));
PostMessage(ч, WM_QUIT, 0, 0);
Свежий1;
конец;
конец.
Авторские права ©, Шанхайская компания по разработке компьютерных систем Jusheng, Ltd., 1999–2000 гг., Все права защищены.