المساعد الشخصي الرقمي

مشاهدة النسخة كاملة : الاختلافات بين برامج الـ DOS وبرامج الـ Windows



PaPEr Cut
21-07-2002, 02:07 PM
1) بيئة Windows مسيرة بالاحداث Event Driven، ففي البرامج التي تعمل تحت نظام التشغيل DOS انت المسؤول الاول والاخير عن عمليات مراقبة اجهزة وحدة الادخال Input Units كلوحة المفاتيح وغيرها والتي كنت تنجهزها بواسطة حلقات تكرارية او ما شابه ذلك. اما مع Windows، فالوضع يختلف تماما. فنظام التشغيل هو المسؤول عن هذه العمليات ويقوم برتجمتها وتفسيرها ومن ثم ارسالها لبرنامج فتأتيك زي البيضة المئشرة! كما سنتعرف لاحقا على الرسائل Messages.


2) نظام Windows عبارة عن نظام متعدد المهام MultiTasking وهي باختصار على انه نظام يسمح بتشغيل اكثر من تطبيق في وقت واحد. مما يحتاج الى تقنيات تسمح بادارة الذاكرة وتنظيم العمليات عليها حتى يعمل كل تطبيق باستقرار. سنرى ذلك لاحقا في ادارة الذاكرة من قبل نظام التشغيل.


3) نظام Windows موحد لمقاييس التعامل مع الاجهزة Hardware. ففي نظم DOS، كان لابد من ارفاق جميع مشغلات الاجهزة Device Drivers حتى يعمل البرنامج. فلو تذكرون عدد الملفات التي كانت تاتي مع Lotus 123 -والتي تختص فقط في تعريف مئات الطابعات- ستقدرون نظام Windows وما يفعله من اجل عدم اشغال المبرمج بنوعية الطابعة التي سيستخدمها المستخدم. فكل ما عليك هو ارسال اوامر الطباعة والباقي على النظام Windows. المزيد ايضا، كملفات الخطوط، كروت الشاشة، كروت الاصوات الخ ...


4) نظام Windows له معايير خاصة لجعل البرامج العاملة عليه متوافقة.


في الحقيقة مهما كانت اللغة التي تستخدمها لتطوير برنامج يعمل تحت Windows كـ C Java Fortran VB الخ... فان جميع هذه اللغات تقوم بعملية استدعاء لدوال واجراءت تعرف بواجهة برمجة التطبيقات Application Programming Interface -تختصر API. وهي عبارة عن الالاف الدوال تعتبر القلب النابض لتطبيقات Windows. فعندما تنشئ نافذة جديدة -بلغة VB مثلا- فكل ما تقوم به هي عملية اختيار الامر Add New Form وتصبح النافذة جاهزة. تقنيا، قام VB باستدعاء عشرات -ان لم يكن مئات- الاجراءات التابعة لـ API من اجل انشاء النافذة، لعل ابرزها دالة CreateWindow. معظم هذه الاجراءات موجودة في مئات ملفات الـ DLL والتابعة لنظام التشغيل.


اذا، نظام Windows عبارة عن اجراءات API تخدم المبرمجين لتوفير لهم كل ما يحتاجونه من اجراءات لتصميم تطبيقات متوافقة مع Windows. رغم ان اعداد ملفات الـ DLL التي تأتي مع نظام التشغيل تفوق عدد شعرات الرأس -وصف بلاغي- الا انه توجد ثلاثة ملفات هي اهم عناصر نظام التشغيل Windows وهي:


1) USER32.DLL

وهي مكتبة توفر اجراءات مسئولة عن اظهار النوافذ، القوائم، مؤشرات الفأرة ولوحة المفاتيح وغيرها...


2) KERNEL32.DLL

توفر اجراءات خاصة بادارة الذاكرة، البرامج التي تعمل بالذاكرة Processes، مصادر النظام System Resources وغيرها..


3) GDI32.DLL

وهي خاصة بالصور والرسوم التي تظهر على الشاشة، الخطوط، فرش الرسم، الالوان الخ...



هذه هي المكتبات الرئيسة لنظم التشغيل Windows. وباقي الملفات تعتبر فرعية لاداء اغراض معينة. فمكتبة COMCTL32.DLL هي خاصة بادوات Windows الشائعة Windows Common Controls والتي ظهرت منذ الاصدار Win95. ومكتبة MAPI32.DLL خاصة لعمليات البريد الالكتروني. وكتبة WinMM.DLL خاصة لاغراض الوسائط المتعددة، ومكتبة ... و.. و... ما راح نخلص يا شباب!


سأبدا الان بالتحدث عن النوافذ التي توفرها مكتبة USER32.DLL

ماهي النافذة Window ؟؟

للوهلة الاولى يتبادر اليك ان النافذة هي عبارة عن مربع يحتوي على عنوان وقائمة رئيسية مع ازرار التكبير والتصغير والاغلاق والتي تستطيع ان تحركها بكل انسيابية باستخدام الفأرة. مع ان الكلام هذا صحيح لكنه ليس دقيق التعريف. فكل شئ تراه اما عينك عبارة عن نافذة !! شريط التمرير Scorl Bar عبارة عن نافذة! وزر ابدأ Start عبارة عن نافذة! وز الاغلاق Close عبارة عن نافذة ايضا! وحتى خانة النص التي اكتب عليها مقالتي Text Box عبارة عن نافذة ايضا!! باختصار، كل شئ تستطيع رؤيته على الشاشة عبارة عن نافذة!!

والسؤال الذي يطرح نفسه الان، كيف تعتبر خانة النص Text Box واشرطة التمرير Scorl Bars وكل شئ تراه نوافذ؟؟ وكيف يستطيع نظام Windows التمييز بينها؟ والجواب هو عن طريق فئة النافذة Window Class, التحدث عن فئة النافذة يتطلب مقالة كاملة لشرحها، لكن -بشكل مؤقت- اعرف ان فئة النافذة عبارة عن قيم تحدد نوع النافذة او الاداة هل هي نافذة حقيقة ام زر اوامر ام خانة نص الخ...

يوجد فئات قياسية وهي تمثل ادوات Windows القياسية كزر الاوامر، خانة النص، اشرطة التمرير الخ.. كما توجد مجموعة ادوات تعرف بادوات Windows الشائعة والتي ظهرت مع الاصدار Win95 كما قلنا.



اهم نقطة اريد توضيحها هنا تجدها بعد الفاصلة، اي نافذة موجودة على الشاشة او مخفية -لكن حية- يوجد لها رقم يعرفها ويميزها عن غيرها، يعرف هذا الرقم بمقبض النافذة Window Handle يختصر بـ hWnd. فاذا سيرتك الايام واحتجت لاستخدام احد اجراءات API والتي تتطلب مقبض النافذة hWnd فهي تطلب رقم من نوع Long قد ارسله نظام التشغيل الى تلك الاداة او النافذة ليميزها عن غيرها. هذا الرقم يعطيه نظام التشغيل عندما يقوم بانشاء الاداة، وتضل الاداة محتفظة بهذا الرقم حتى تلغى من الذاكرة. لن تستطيع ان تحدد مقبض الاداة بنفسك فهي مهمة نظام التشغيل، كذلك لن تستطيع تغيير هذا الرقم. الخلاصة التي اود ان اقولها هي: ان نظام التشغيل يتعرف على جميع النوافذ والادوات عن طريق هذا الرقم. فكل اجراءت API والخاصة بالنوافذة والادوات ستطلب منك هذا الرقم.