تطوير برنامج معاينة شاشة التوقف باستخدام دلفي
تنظيم وتحرير : الصين
---- يعرف الجميع دور شاشة التوقف الخاصة بنظام Windows، وتصبح شاشة التوقف الجديدة أكثر جمالاً إذا قمت بتحديد خصائص من قائمة النقر بزر الماوس الأيمن على سطح المكتب لنظام Win95، ستظهر واجهة إعدادات العرض، وهناك هي علامة تبويب لإعداد شاشة التوقف.
---- على شاشة هذه الصفحة، يوجد نمط شاشة إذا اخترت شاشة التوقف التي تأتي مع نظام Win95، فسيتم تشغيل شاشة التوقف تلقائيًا على هذه "الشاشة" الصغيرة، ويمكنك رؤية تأثير التشغيل مباشرة. تعمل هذه الوظيفة على تسهيل اختيار شاشة التوقف إلى حد كبير. هذه هي الواجهة الجديدة لشاشة التوقف الخاصة بنظام Win95: وظيفة المعاينة.
---- معظم شاشات التوقف التي تم إطلاقها حديثًا تدعم حاليًا هذه الواجهة.
---- منذ إنشائها، يمكن تشغيل شاشة توقف واحدة فقط في نفس الوقت، ولا يمكن تشغيل شاشات متعددة في نفس الوقت، ومع ذلك، فإن إدخال واجهة المعاينة يجعل من الممكن معاينة شاشات توقف متعددة في نفس الوقت ستوضح هذه المقالة للقراء كيفية تطوير مثل هذا البرنامج باستخدام دلفي.
---- 1. واجهة معاينة شاشة التوقف
---- واجهة معاينة شاشة التوقف سهلة الاستخدام للغاية ويتم تحقيق ذلك عن طريق تمرير معلمات سطر الأوامر إلى شاشة التوقف.
---- شاشة التوقف.exe /p #####
---- حيث ##### هو التمثيل العشري لمقبض نافذة صالح.
---- يمكننا أن نسمي هذه النافذة نافذة المعاينة.
----في الواقع، تقوم حافظات الشاشة التي تدعم واجهة المعاينة بإنشاء نوافذ خاصة بها كنافذة فرعية لنافذة المعاينة لتنفيذ وظيفة المعاينة.
---- 2. تخطيط الشاشة
---- تنقسم نافذة برنامجنا إلى 3 أجزاء، وهي على شكل "دبوس" مقلوب. يسرد الجزء العلوي الأيسر جميع شاشات التوقف المتاحة، ويسرد الجزء العلوي الأيمن جميع شاشات التوقف التي تمت معاينتها، والجزء السفلي هو. بالطبع نافذة المعاينة بالفعل.
---- عند التنفيذ باستخدام دلفي، قم أولاً بوضع مكوني TPanel في النموذج، ويتم محاذاة اللوحة 1 إلى الأعلى، واللوحة 2 لملء منطقة المستخدم، ثم ضع مكون TFileListBox ومكون TListBox في اللوحة 1، ويتم محاذاة FileListBox1 إلى اليسار، ListBox1 يملأ منطقة المستخدم.
---- بهذه الطريقة، FileListBox1 هي قائمة شاشة التوقف، ListBox1 هي قائمة المعاينة، و Panel2 هي نافذة المعاينة.
---- 3. قائمة شاشات التوقف.
----قم بتعيين خاصية القناع الخاصة بـ FileListBox1 على '*.scr'، وهو امتداد شاشة التوقف.
---- قم بتعيين FileListBox1.directory إلى دليل نظام Windows GetSystemDirectory في طريقة FormCreate؛
---- 4. معاينة شاشة التوقف.
---- قم بتشغيل شاشة التوقف بطريقة FileListBox1DblClick وتمرير مقبض نافذة Panel2 إليها.
---- WinExec(pchar(FileListBox1.FileName + ' /p' + inttostr(Panel2.handle)), SW_Show);
---- ماذا عن تشغيل البرنامج؟
---- 5. أضف بعض الميزات الجديدة: إخفاء/إظهار/إغلاق.
---- تمت إضافة وظيفتين: تستخدم لتحديث ListBox1.
الدالة إنومبروك(
h : HWND;//مقبض النافذة الفرعية
l : عدد صحيح // القيمة المحددة بالتطبيق
): boolean;stdcall;
فار
buf: صفيف[0..255] من char؛
يبدأ
GetWindowText(h, buf, sizeof(buf)- 1);
إذا كانت النافذة مرئية (ح) إذن
Form1.ListBox1.items.add(' ' +strpas(buf) + ' : ' + inttostr(h))
آخر
Form1.ListBox1.items.add('-' +strpas(buf) + ' : ' + inttostr(h));
النتيجة :=صحيح؛
نهاية؛
الإجراء TForm1.Fresh1؛
يبدأ
ListBox1.clear;
تعدادChildwindows(Panel2.handle،
TFNWndEnumProc(@enumproc), 0);
نهاية؛
---- أضف قائمة منبثقة Popupmenu1، و3 عناصر قائمة، 'إظهار، إخفاء، إغلاق'، وأشر ListBox1.popupmemu إلى Popupmenu1.
---- وظيفة المعالجة للإخفاء هي:
الإجراء TForm1.Hide1Click(Sender: TObject);
فار
ح : عدد صحيح؛
الصورة: سلسلة؛
يبدأ
إذا ListBox1.itemindex = -1 ثم قم بالخروج؛
s := Listbox1.items[ListBox1.itemindex];
h := strtoint(copy(s, pos(':', s) + 1, length(s)));
ShowWindow(h, SW_HIDE);
طازج 1؛
نهاية؛
وظيفة المعالج للعرض هي:
الإجراء TForm1.Show1Click(Sender: TObject);
فار
ح : عدد صحيح؛
الصورة: سلسلة؛
يبدأ
إذا ListBox1.itemindex = -1 ثم قم بالخروج؛
s := Listbox1.items[ListBox1.itemindex];
h := strtoint(copy(s, pos(':', s) + 1, length(s)));
ShowWindow(h, SW_SHOW);
طازج 1؛
نهاية؛
وظيفة المعالج للإغلاق هي:
الإجراء TForm1.Close1Click(Sender: TObject);
فار
ح : عدد صحيح؛
الصورة: سلسلة؛
يبدأ
إذا ListBox1.itemindex = -1 ثم قم بالخروج؛
s := Listbox1.items[ListBox1.itemindex];
h := strtoint(copy(s, pos(':', s) + 1, length(s)));
PostMessage(h, WM_QUIT, 0, 0);
طازج 1؛
نهاية؛
---- تم تصحيح أخطاء هذا البرنامج ضمن Delphi 3.0 ويجب أن يكون من الممكن تجميعه باستخدام Delphi 1.0 / 2.0.
---- الإجراء الكامل هو كما يلي:
الوحدة 1؛
واجهة
الاستخدامات
Windows، الرسائل، SysUtils، الفئات، الرسومات، عناصر التحكم، النماذج، مربعات الحوار، StdCtrls، FileCtrl، ExtCtrls، القوائم؛
يكتب
TForm1 = الفئة (TForm)
اللوحة 1: لوحة T؛
اللوحة 2: لوحة T؛
FileListBox1: TFileListBox;
ListBox1: TListBox؛
PopupMenu1: TPopupMenu؛
Hide1: TMenuItem;
Show1: TMenuItem;
Close1: TMenuItem;
الإجراء FormCreate(Sender: TObject);
الإجراء FileListBox1DblClick(Sender: TObject);
إجراء Hide1Click(Sender: TObject);
الإجراء Show1Click(Sender: TObject);
الإجراء Close1Click(Sender: TObject);
خاص
{تصريحات خاصة}
عام
{التصريحات العامة}
الإجراء Fresh1؛
نهاية؛
فار
Form1: TForm1؛
تطبيق
{$R *.DFM}
الدالة إنومبروك(
h : HWND;//مقبض النافذة الفرعية
l : عدد صحيح // القيمة المحددة بالتطبيق
): boolean;stdcall;
فار buf: صفيف [0..255] من شار؛
يبدأ
GetWindowText(h, buf, sizeof(buf)- 1);
إذا كانت النافذة مرئية (ح) إذن
Form1.ListBox1.items.add(' ' +strpas(buf) + ' : ' + inttostr(h))
آخر
Form1.ListBox1.items.add('-' +strpas(buf) + ' : ' + inttostr(h));
النتيجة :=صحيح؛
نهاية؛
الإجراء TForm1.Fresh1؛
يبدأ
ListBox1.clear;
enumChildwindows(Panel2.handle, TFNWndEnumProc(@enumproc), 0);
نهاية؛
الإجراء TForm1.FormCreate(Sender: TObject);
فار buf: صفيف [0..256] من شار؛
يبدأ
GetSystemDirectory(buf, sizeof(buf) - 1);
FileListBox1.directory := strpas(buf);
ListBox1.popupmenu := Popupmenu1;
نهاية؛
الإجراء TForm1.FileListBox1DblClick(Sender: TObject);
يبدأ
WinExec(pchar(FileListBox1.FileName + ' /p' + inttostr(Panel2.handle)), SW_Show);
طازج 1؛
نهاية؛
الإجراء TForm1.Hide1Click(Sender: TObject);
فار
ح : عدد صحيح؛
الصورة: سلسلة؛
يبدأ
إذا ListBox1.itemindex = -1 ثم قم بالخروج؛
s := Listbox1.items[ListBox1.itemindex];
h := strtoint(copy(s, pos(':', s) + 1, length(s)));
ShowWindow(h, SW_HIDE);
طازج 1؛
نهاية؛
الإجراء TForm1.Show1Click(Sender: TObject);
فار
ح : عدد صحيح؛
الصورة: سلسلة؛
يبدأ
إذا ListBox1.itemindex = -1 ثم قم بالخروج؛
s := Listbox1.items[ListBox1.itemindex];
h := strtoint(copy(s, pos(':', s) + 1, length(s)));
ShowWindow(h, SW_SHOW);
طازج 1؛
نهاية؛
الإجراء TForm1.Close1Click(Sender: TObject);
فار
ح : عدد صحيح؛
الصورة: سلسلة؛
يبدأ
إذا ListBox1.itemindex = -1 ثم قم بالخروج؛
s := Listbox1.items[ListBox1.itemindex];
h := strtoint(copy(s, pos(':', s) + 1, length(s)));
PostMessage(h, WM_QUIT, 0, 0);
طازج 1؛
نهاية؛
نهاية.
حقوق النشر والنسخ؛ شركة Shanghai Jusheng Computer System Engineering Co., Ltd. 1999-2000، جميع الحقوق محفوظة