Kembangkan program pratinjau screen saver dengan Delphi
Pengorganisasian dan penyuntingan: China asp
---- Semua orang tahu peran screen saver windows, dan screen saver baru menjadi semakin cantik. Jika Anda memilih properti dari menu klik kanan desktop win95, antarmuka pengaturan tampilan akan muncul, dan di sana adalah tab untuk mengatur screen saver.
---- Pada layar halaman ini, terdapat pola monitor. Jika Anda memilih screen saver yang disertakan dengan win95, screen saver akan otomatis berjalan di 'monitor' kecil ini, dan Anda dapat langsung melihat efek pengoperasiannya. . Fungsi ini sangat memudahkan pemilihan screen saver. Ini adalah antarmuka baru win95 untuk screen saver: fungsi pratinjau.
---- Sebagian besar screen saver yang baru diluncurkan saat ini mendukung antarmuka ini.
---- Sejak lahir, hanya satu screen saver yang dapat dijalankan secara bersamaan, dan beberapa layar tidak dapat dijalankan secara bersamaan. Namun, pengenalan antarmuka pratinjau memungkinkan untuk melihat beberapa screen saver secara bersamaan kali ini. Artikel ini akan menunjukkan kepada pembaca Memperkenalkan bagaimana mengembangkan program seperti itu menggunakan Delphi.
---- 1. Antarmuka pratinjau screen saver
---- Antarmuka pratinjau screen saver sangat mudah digunakan. Hal ini dicapai dengan meneruskan parameter baris perintah ke screen saver.
---- screensaver.exe /p #####
---- Dimana ##### adalah representasi desimal dari pegangan jendela yang valid.
---- Kita dapat menyebut jendela ini sebagai jendela pratinjau.
----Faktanya, screensaver yang mendukung antarmuka pratinjau membuat jendelanya sendiri sebagai subjendela dari jendela pratinjau untuk mengimplementasikan fungsi pratinjau.
---- 2. Tata letak layar
---- Jendela program kita dibagi menjadi 3 bagian, yang berbentuk 'pin' terbalik. Bagian kiri atas mencantumkan semua screensaver yang tersedia, bagian kanan atas mencantumkan semua screensaver yang dipratinjau, dan bagian bawah adalah tentu saja jendela pratinjau.
---- Jika diimplementasikan dengan Delphi, pertama-tama letakkan dua komponen TPanel di Form, Panel1 sejajar paling atas, Panel2 untuk mengisi area pengguna, lalu letakkan komponen TFileListBox dan komponen TListBox di Panel1, FileListBox1 rata kiri, ListBox1 mengisi area pengguna.
---- Dengan cara ini, FileListBox1 adalah daftar screen saver, ListBox1 adalah daftar pratinjau, dan Panel2 adalah jendela pratinjau.
---- 3. Daftar screen saver.
---- Atur properti Mask FileListBox1 ke '*.scr', yang merupakan ekstensi screen saver.
---- Setel FileListBox1.directory ke direktori sistem windows GetSystemDirectory dalam metode FormCreate;
---- 4. Pratinjau screen saver.
---- Jalankan screensaver dalam metode FileListBox1DblClick dan berikan pegangan jendela Panel2 ke sana.
---- WinExec(pchar(FileListBox1.FileName + ' /p ' + inttostr(Panel2.handle)), SW_Show);
---- Bagaimana dengan menjalankan programnya?
---- 5. Tambahkan beberapa fitur baru: sembunyikan/tampilkan/tutup.
---- Menambahkan 2 fungsi: digunakan untuk memperbarui ListBox1.
fungsi EnumPROc(
h : HWND;//pegangan jendela anak
l : bilangan bulat// nilai yang ditentukan aplikasi
): boolean;stdcall;
var
buf : array[0..255] dari char;
mulai
GetWindowText(h, buf, sizeof(buf)- 1);
jika jendela terlihat(h) maka
Form1.ListBox1.items.add(' ' +strpas(buf) + ' : ' + inttostr(h))
kalau tidak
Form1.ListBox1.items.add('-' +strpas(buf) + ' : ' + inttostr(h));
Hasil := benar;
akhir;
prosedur TForm1.Fresh1;
mulai
ListBox1.hapus;
enumChildwindows(Panel2.pegangan,
TFNWndEnumProc(@enumproc), 0);
akhir;
---- Tambahkan menu pop-up Popupmenu1, 3 item menu, 'Tampilkan, Sembunyikan, Tutup', dan arahkan ListBox1.popupmemu ke Popupmenu1.
---- Fungsi pemrosesan Hide adalah:
prosedur TForm1.Hide1Click(Pengirim: TObject);
var
h : bilangan bulat;
s : tali;
mulai
jika ListBox1.itemindex = -1 lalu keluar;
s := Kotak Daftar1.item[KotakDaftar1.itemindex];
h := strtoint(salinan(s, pos(':', s) + 1, panjang(s)));
ShowWindow(h, SW_HIDE);
Segar1;
akhir;
Fungsi pengendali untuk Show adalah:
prosedur TForm1.Show1Click(Pengirim: TObject);
var
h : bilangan bulat;
s : tali;
mulai
jika ListBox1.itemindex = -1 lalu keluar;
s := Kotak Daftar1.item[KotakDaftar1.itemindex];
h := strtoint(salinan(s, pos(':', s) + 1, panjang(s)));
ShowWindow(h, SW_SHOW);
Segar1;
akhir;
Fungsi handler untuk Close adalah:
prosedur TForm1.Close1Click(Pengirim: TObject);
var
h : bilangan bulat;
s : tali;
mulai
jika ListBox1.itemindex = -1 lalu keluar;
s := Kotak Daftar1.item[KotakDaftar1.itemindex];
h := strtoint(salinan(s, pos(':', s) + 1, panjang(s)));
Pesan Pos(h, WM_QUIT, 0, 0);
Segar1;
akhir;
---- Program ini telah di-debug pada Delphi 3.0 dan seharusnya dapat dikompilasi dengan Delphi 1.0/2.0.
---- Prosedur lengkapnya adalah sebagai berikut:
satuan Unit1;
antarmuka
kegunaan
Windows, Pesan, SysUtils, Kelas, Grafik, Kontrol, Formulir, Dialog, StdCtrls, FileCtrl, ExtCtrls, Menu;
jenis
TForm1 = kelas(TForm)
Panel1: TPanel;
Panel2: TPanel;
FileListBox1: TFileListBox;
Kotak Daftar1: TListBox;
Menu Popup1: Menu Popup;
Sembunyikan1: TMenuItem;
Pertunjukan1: TMenuItem;
Tutup1: TMenuItem;
prosedur FormCreate(Pengirim: TObject);
prosedur FileListBox1DblClick(Pengirim: TObject);
prosedur Hide1Click(Pengirim: TObject);
prosedur Show1Click(Pengirim: TObject);
prosedur Close1Click(Pengirim: TObject);
pribadi
{Deklarasi pribadi}
publik
{Pernyataan publik}
prosedur Segar1;
akhir;
var
Formulir1: TForm1;
pelaksanaan
{$R *.DFM}
fungsi EnumProc(
h : HWND;//pegangan jendela anak
l : bilangan bulat// nilai yang ditentukan aplikasi
): boolean;stdcall;
var buf: array[0..255] dari char;
mulai
GetWindowText(h, buf, sizeof(buf)- 1);
jika jendela terlihat(h) maka
Form1.ListBox1.items.add(' ' +strpas(buf) + ' : ' + inttostr(h))
kalau tidak
Form1.ListBox1.items.add('-' +strpas(buf) + ' : ' + inttostr(h));
Hasil := benar;
akhir;
prosedur TForm1.Fresh1;
mulai
ListBox1.hapus;
enumChildwindows(Panel2.handle, TFNWndEnumProc(@enumproc), 0);
akhir;
prosedur TForm1.FormCreate(Pengirim: TObject);
var buf: array[0..256] dari char;
mulai
DapatkanSystemDirectory(buf, sizeof(buf) - 1);
FileListBox1.direktori := strpas(buf);
ListBox1.popupmenu := Menu popup1;
akhir;
prosedur TForm1.FileListBox1DblClick(Pengirim: TObject);
mulai
WinExec(pchar(FileListBox1.FileName + ' /p ' + inttostr(Panel2.handle)), SW_Show);
Segar1;
akhir;
prosedur TForm1.Hide1Click(Pengirim: TObject);
var
h : bilangan bulat;
s : tali;
mulai
jika ListBox1.itemindex = -1 lalu keluar;
s := Kotak Daftar1.item[KotakDaftar1.itemindex];
h := strtoint(salinan(s, pos(':', s) + 1, panjang(s)));
ShowWindow(h, SW_HIDE);
Segar1;
akhir;
prosedur TForm1.Show1Click(Pengirim: TObject);
var
h : bilangan bulat;
s : tali;
mulai
jika ListBox1.itemindex = -1 lalu keluar;
s := Kotak Daftar1.item[KotakDaftar1.itemindex];
h := strtoint(salinan(s, pos(':', s) + 1, panjang(s)));
ShowWindow(h, SW_SHOW);
Segar1;
akhir;
prosedur TForm1.Close1Click(Pengirim: TObject);
var
h : bilangan bulat;
s : tali;
mulai
jika ListBox1.itemindex = -1 lalu keluar;
s := Kotak Daftar1.item[KotakDaftar1.itemindex];
h := strtoint(salinan(s, pos(':', s) + 1, panjang(s)));
Pesan Pos(h, WM_QUIT, 0, 0);
Segar1;
akhir;
akhir.
Hak Cipta © Shanghai Jusheng Computer System Engineering Co., Ltd. 1999-2000, Semua Hak Dilindungi Undang-Undang