Développer un programme de prévisualisation d'écran de veille avec Delphi
Organisation et édition : China asp
---- Tout le monde connaît le rôle de l'économiseur d'écran Windows, et le nouvel économiseur d'écran devient de plus en plus beau. Si vous sélectionnez les propriétés dans le menu contextuel du bureau de Win95, l'interface des paramètres du moniteur apparaîtra, et là. est un onglet pour configurer l'économiseur d'écran.
---- Sur l'écran de cette page, il y a un modèle de moniteur. Si vous choisissez l'économiseur d'écran fourni avec Win95, l'économiseur d'écran s'exécutera automatiquement sur ce petit « moniteur », et vous pourrez directement voir l'effet en cours. . Cette fonction facilite grandement la sélection des économiseurs d'écran. Il s'agit de la nouvelle interface de win95 pour les économiseurs d'écran : la fonction aperçu.
---- La plupart des économiseurs d'écran récemment lancés prennent actuellement en charge cette interface.
---- Depuis sa création, un seul économiseur d'écran peut être exécuté en même temps, et plusieurs écrans ne peuvent pas être exécutés en même temps. Cependant, l'introduction de l'interface de prévisualisation a permis de prévisualiser plusieurs écrans de veille en même temps. en même temps.Cet article montrera aux lecteurs comment développer un tel programme en utilisant Delphi.
---- 1. Interface d'aperçu de l'économiseur d'écran
---- L'interface d'aperçu de l'économiseur d'écran est très simple à utiliser en transmettant les paramètres de ligne de commande à l'économiseur d'écran. Le format des paramètres de ligne de commande est :
---- économiseur d'écran.exe /p #####
---- Où ##### est la représentation décimale d'un handle de fenêtre valide.
---- Nous pouvons appeler cette fenêtre la fenêtre d'aperçu.
----En fait, les économiseurs d'écran qui prennent en charge l'interface d'aperçu créent leurs propres fenêtres en tant que sous-fenêtres de la fenêtre d'aperçu pour implémenter la fonction d'aperçu.
---- 2. Disposition de l'écran
---- La fenêtre de notre programme est divisée en 3 parties, qui ont la forme d'une « épingle » inversée. La partie supérieure gauche répertorie tous les économiseurs d'écran disponibles, la partie supérieure droite répertorie tous les économiseurs d'écran prévisualisés et la partie inférieure est. bien sûr la fenêtre d'aperçu.
---- Lorsqu'il est implémenté avec Delphi, placez d'abord deux composants TPanel dans le formulaire, Panel1 est aligné vers le haut, Panel2 doit remplir la zone utilisateur, puis placez un composant TFileListBox et un composant TListBox dans Panel1, FileListBox1 est aligné à gauche, ListBox1 remplit la zone utilisateur.
---- De cette façon, FileListBox1 est la liste des économiseurs d'écran, ListBox1 est la liste d'aperçu et Panel2 est la fenêtre d'aperçu.
---- 3. Liste des économiseurs d'écran.
---- Définissez la propriété Mask de FileListBox1 sur '*.scr', qui est l'extension de l'économiseur d'écran.
---- Définissez FileListBox1.directory sur le répertoire système Windows GetSystemDirectory dans la méthode FormCreate ;
---- 4. Aperçu de l'économiseur d'écran.
----Exécutez l'économiseur d'écran dans la méthode FileListBox1DblClick et transmettez-lui le handle de fenêtre de Panel2.
---- WinExec(pchar(FileListBox1.FileName + ' /p ' + inttostr(Panel2.handle)), SW_Show);
---- Que diriez-vous d'exécuter le programme ?
---- 5. Ajoutez quelques nouvelles fonctionnalités : masquer/afficher/fermer.
----Ajout de 2 fonctions : utilisées pour mettre à jour ListBox1.
fonction EnumPRoc(
h : HWND;//poignée de la fenêtre enfant
l : entier // valeur définie par l'application
): booléen;stdcall;
var
buf : tableau[0..255] de caractères ;
commencer
GetWindowText(h, buf, sizeof(buf)- 1);
si iswindowvisible(h) alors
Form1.ListBox1.items.add(' ' +strpas(buf) + ' : ' + inttostr(h))
autre
Form1.ListBox1.items.add('-' +strpas(buf) + ' : ' + inttostr(h));
Résultat := vrai ;
fin;
procédure TForm1.Fresh1 ;
commencer
ListBox1.clear;
enumChildwindows(Panel2.handle,
TFNWndEnumProc (@enumproc), 0);
fin;
---- Ajoutez un menu contextuel Popupmenu1, 3 éléments de menu, 'Afficher, Masquer, Fermer' et pointez ListBox1.popupmemu vers Popupmenu1.
----La fonction de traitement de Hide est :
procédure TForm1.Hide1Click(Expéditeur : TObject);
var
h : entier ;
s : chaîne ;
commencer
si ListBox1.itemindex = -1 alors quittez ;
s := Listbox1.items[ListBox1.itemindex];
h := strtoint(copie(s, pos(':', s) + 1, longueur(s)));
ShowWindow(h, SW_HIDE);
Frais1 ;
fin;
La fonction de gestionnaire pour Show est :
procédure TForm1.Show1Click(Expéditeur : TObject);
var
h : entier ;
s : chaîne ;
commencer
si ListBox1.itemindex = -1 alors quittez ;
s := Listbox1.items[ListBox1.itemindex];
h := strtoint(copie(s, pos(':', s) + 1, longueur(s)));
ShowWindow(h, SW_SHOW);
Frais1 ;
fin;
La fonction de gestionnaire pour Close est :
procédure TForm1.Close1Click(Expéditeur : TObject);
var
h : entier ;
s : chaîne ;
commencer
si ListBox1.itemindex = -1 alors quittez ;
s := Listbox1.items[ListBox1.itemindex];
h := strtoint(copie(s, pos(':', s) + 1, longueur(s)));
PostMessage(h, WM_QUIT, 0, 0);
Frais1 ;
fin;
---- Ce programme a été débogué sous Delphi 3.0 et devrait pouvoir être compilé avec Delphi 1.0 / 2.0.
----La procédure complète est la suivante :
unité Unité1 ;
interface
utilise
Windows, messages, SysUtils, classes, graphiques, contrôles, formulaires, boîtes de dialogue, StdCtrls, FileCtrl, ExtCtrls, menus ;
taper
TForm1 = classe(TForm)
Panneau 1 : TPanel ;
Panneau 2 : TPanel ;
FileListBox1 : TFileListBox ;
ListBox1 : TListBox ;
Menu contextuel1 : TPopupMenu ;
Masquer1 : TMenuItem ;
Show1 : TMenuItem ;
Fermer1 : TMenuItem ;
procédure FormCreate(Expéditeur : TObject);
procédure FileListBox1DblClick(Expéditeur : TObject);
procédure Hide1Click(Expéditeur : TObject);
procédure Show1Click (Expéditeur : TObject);
procédure Close1Click (Expéditeur : TObject);
privé
{Déclarations privées}
publique
{Déclarations publiques}
procédure Fraîche1 ;
fin;
var
Formulaire1 : TForm1 ;
mise en œuvre
{$R *.DFM}
fonction EnumProc(
h : HWND;//poignée de la fenêtre enfant
l : entier // valeur définie par l'application
): booléen;stdcall;
var buf : tableau[0..255] de caractères ;
commencer
GetWindowText(h, buf, sizeof(buf)- 1);
si iswindowvisible(h) alors
Form1.ListBox1.items.add(' ' +strpas(buf) + ' : ' + inttostr(h))
autre
Form1.ListBox1.items.add('-' +strpas(buf) + ' : ' + inttostr(h));
Résultat := vrai ;
fin;
procédure TForm1.Fresh1 ;
commencer
ListBox1.clear;
enumChildwindows (Panel2.handle, TFNWndEnumProc (@enumproc), 0);
fin;
procédure TForm1.FormCreate(Expéditeur : TObject);
var buf : tableau[0..256] de caractères ;
commencer
GetSystemDirectory(buf, sizeof(buf) - 1);
FileListBox1.directory := strpas(buf);
ListBox1.popupmenu := Popupmenu1;
fin;
procédure TForm1.FileListBox1DblClick(Expéditeur : TObject);
commencer
WinExec(pchar(FileListBox1.FileName + ' /p ' + inttostr(Panel2.handle)), SW_Show);
Frais1 ;
fin;
procédure TForm1.Hide1Click(Expéditeur : TObject);
var
h : entier ;
s : chaîne ;
commencer
si ListBox1.itemindex = -1 alors quittez ;
s := Listbox1.items[ListBox1.itemindex];
h := strtoint(copie(s, pos(':', s) + 1, longueur(s)));
ShowWindow(h, SW_HIDE);
Frais1 ;
fin;
procédure TForm1.Show1Click(Expéditeur : TObject);
var
h : entier ;
s : chaîne ;
commencer
si ListBox1.itemindex = -1 alors quittez ;
s := Listbox1.items[ListBox1.itemindex];
h := strtoint(copie(s, pos(':', s) + 1, longueur(s)));
ShowWindow(h, SW_SHOW);
Frais1 ;
fin;
procédure TForm1.Close1Click(Expéditeur : TObject);
var
h : entier ;
s : chaîne ;
commencer
si ListBox1.itemindex = -1 alors quittez ;
s := Listbox1.items[ListBox1.itemindex];
h := strtoint(copie(s, pos(':', s) + 1, longueur(s)));
PostMessage(h, WM_QUIT, 0, 0);
Frais1 ;
fin;
fin.
Copyright et copie ; Shanghai Jusheng Computer System Engineering Co., Ltd. 1999-2000, tous droits réservés ;