الدرس الأول: دخول سريع--صندوق الرسائل
إتبع الخطوات التالية من فضلك...
1- قم بتشغيل جهازك.
2- إبدأ برنامج فيجوال سي++
3- إختر الأمر : File--->New
4- تأكد من أنك تقف على الصفحة المعنونة : Projects
5- إختر Win32 Application من الواجهة اليسرى.
6- إملأ اسم المشروع في الحقل النصي المعنون Project Name
7- إنقر OK
8- تأكد من أنك تقف على الخيار An Empty Project
9- مرة أخرى : File--->New
10- تأكد هذه المرة أنك تقف على الصفحة Files
11- عبيء إسم الملف الجديد.
12- إلصق الكود التالي داخله:
#include
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance,
LPSTR lpCmdLine, int nCmdShow)
{
MessageBox(NULL, "Hello, Bazramit!", "Bazramit", MB_OK);
return 0;
}13- من القائمة اختر : Build--->Build [ProjectName].exe
14- إنتظر حتى ينهي البرنامج ما يقوم به.
15- ثم إختر : Build--->Execute [ProjectName].exe
16- استمتع بوقتك.. لقد أصبحت في لمح البصر : مبرمج ويندوز!
*****************
التعليق على الكود:
بالطبع لن أخوض في مسائل جانبية وأقوم بشرح ماهية ويندوز وما إلى ذلك...نحن لنا ما نرى!...
فلنبدأ:
بالطبع تذكر أيام كانت كل مداخل البرامج من خلال الدالة
main()
هل نسيت؟...جيد أنك نسيت..لأننا لن نستخدم هذه الدالة كمدخل تحت منصة ويندوز..ولكن الدالة التي يحب ألا تنساها الآن هي:
WinMain()
وكما تلاحظ من الكود، يقوم عالم ويندوز المرعب بتمرير مجموعة من الـParameters للدالة WinMain عند بدء البنامج..:
أولا..
HINSTANCE hInstance
وهي المعالج الرئيسي Handle للنسخة العاملة من البرنامج في الذاكرة..ستستخدم هذا الـParameter المفيد جدا في حالة تحميل موارد خاصة بالبرنامج و متضمنة
في ملف الـEXE.
ثانيا..
HINSTANCE hPrevInstance
غير مفيد بالنسبة للبرامج تحت ويندوز 95 فما فوق..
ثالثا..
LPSTR lpCmdLine
عندما تقوم بتشغيل برنامج من خلال أمر RUN في أي نسخة ويندوز..بإمكانك بالطبع تمرير خلاصة أو Argument على هيئة نص.
مثلا جرب معي هذا الأمر في نافذة RUN:
"G:Program FilesInternet ExplorerIEXPLORE.EXE" [url="http://www.bazramit.com%5b/php"]]http://www.bazramit.com
في هذه الحالة يمكنك القول بلا فخر أنك مررت Argument قيمتها
http://www.bazramit.com
للبرنامج ليفعل بها ما يحلو له!
هذه الـArgument تستقبلها انت داخل برنامجك من خلال المتغير الممرر لك من ويندوز: lpCmdLine
رابعا..
int nCmdShow
ليس من المهم أن تعرف أهمية هذا المتغير في المرحلة الحالية ولكنه قليلا جدا ما يستخدم.
ملحوظة أخرى على الـParameters أنها تتضمن أنواعا من النتغيرات لأول مرة تصادفها..صحيح؟..
HINSTANCE هو نوع المتغير الذي يحمل Handle للوحدة العاملة لأي برنامج محمل في الذاكرة.
LPSTR يعني Long Pointer to String أو مؤشر إلى نص وهو مساو تماما لـchar * (تذكر أتك تبعث بالـArgument على هيئة نصية).
مفهوم...ولكن يجب أن تعرف أن هذه الأنواع (وغيرها كثير) يستخدم تحت منصة win32 (ويندوز 95 فما فوق) فقط..
وكلا النوعين المشار إليهما يتكون من DWORD أي 32 بٍت. تماما كالـint(تحت ويندوز 95 فما فوق أو UNIX).
يلاحظ أيضا استخدام WINAPI قبل استدعاء WinMain وهي كما يقال مجرد عرف متبع ليس إلا وذلك لتحديد نوع الاستدعاء.
الآن لنلق نظرة وداع على الدالة التي تسببت في إظهار الرسالة:
MessageBox(NULL, "Hello, Bazramit!", "Bazramit", MB_OK);
هذه الدالة تقوم بإخبار ويندوز أن برنامجك يريد أن يظهر رسالة نصها "Hello, Bazramit" و العنوان الئيسي لها "Bazramit" ..
وبالتالي فإن النظام (في أغلب الأحيان) ينزل على رغبتك وينفذ ما طلبت.
إنها واحدة من آلاف الدوال الموجودة بويندوز وتسمى دوال API لتوفر للمبرمج أن يطلب ما يشاء من النظام..
لا تعتقد أنك ستضطر في يوم من الأيام لأن تستذكر آلاف الدوال لتصبح محترفا..على العكس، المهم أن تتعلم كيف تستخدم الـHelp لتخرج منه ما تريد...
خطوة أولى نحو الإحتراف...إذا كنت لا تملك MSDNإنزل هذا الملف المدعو WIN32.hlp من اللنك التالي:
http://212.14.34.87/~devon/down/helpy/winapi32.zip
وابحث عن الدالة MessageBox لتحصل على توقيعها وكيفية إستخدامها...طبعا قد يصعب عليك فهم كل شيء الآن..لكن لا تقلق..أنت قريب جدا!
في الدرس القادم سوف نمضي وقتا ممتعا في تعلم كيفية بناء نافذة Window ونتعرف على أهم مكوناتها.
دمتم بخير