السلام عليكم.
فكرت بكتابة سلسلة من التجارب التي مررت بها في الكتب التي درستها عن Visual C++ و في كل مرة أكتب عن تجربة معينة و نحاول معاً تطوير هذه التجربة من أجل الحصول على أداء أفضل للتجربة, فهيا معاً إلى التجربة الأولى.:)
بنيت برنامجاً بسيطاً من أجل إظهار التوقيت في شريط الحالة StatusBar و يمكن تعديل البرنامج من أجل إظهار التاريخ أيضاً بنفس الطريقة.
يمكن الحصول على البرنامج من الوصلة التالية:
http://arabteam.nicmatic.com/atassi/adel/s.../statustime.zip
شرح البرنامج:
قمت باستخدام مشروع من نوع SDI لأنه يحتوي مسبقاً على StatusBar.
أولاً يجب تعريف Resource ID جديد من أجل المنطقة ( النافذة ) الصغيرة التي سيتم وضع الوقت فيها و يتم ذلك من خلال القائمة View و من ثم اختيار الأمر Resource Symbols فتظهر شاشة تحتوي على المعرفات الحالية ثم نضغط على New و نكتب ID_INDICATOR_CLOCK و طبعاً تستطيعون كتابة أي اسم تريدون.
ثم يجب تعريف هذا ال ID ضمن مصفوفة ال Indicators والتي نجدها في الملف MainFrm.cpp .
و من أجل تحديث المعلومات في شريط الحالة فقد قمت بتشغيل مؤقت Timer بحيث يحفز كل 1000 ميلي ثانية ( ا ثانية ) و نجد هذا السطر في التابع CmainFrame::OnCreate() .
ثم نضيف Handler للأمر و هو OnUpdateClock() و الذي يتم تنفيذه كلما كان شريط الحالة يحتاج إلى تحديث معلومات ID_INDICATOR_CLOCK .
و داخل هذا التابع وضعت الشيفرة الخاصة بتحديد تنسيق الوقت الذي سيستخدم بالاعتماد على اعدادات المستخدم الحالي التي يمكن أن نجدها في اعدادات النظام في لوحة التحكم و قد استخدمت التابعين GetUserDefaultLCID() و GetTimeFormat() من أجل الحصول على تنسيق الوقت و من ثم تم حساب عرض النص المطلوب إظهاره و في النهاية تم إظهار الوقت.
طبعاً هذه العملية تحدث كل ثانية و هو الذي يجعل الوقت يظهر بشكل صحيح في شريط المهام.
وأنا جاهز لأي اسفسارات أخرى حول البرنامج أو فكرة جديدة لتطوير هذه التجربة.
إلى اللقاء في التجربة التالية.
مع التحيات.