الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

سلسلة التجارب - التجربة الأولى

مغلق
بدأه Adel Khayata في 25 يوليو 2001 · 4 رد · 589 مشاهدة · في ارشيف قسم C/C++
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم.

فكرت بكتابة سلسلة من التجارب التي مررت بها في الكتب التي درستها عن 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() من أجل الحصول على تنسيق الوقت و من ثم تم حساب عرض النص المطلوب إظهاره و في النهاية تم إظهار الوقت.

طبعاً هذه العملية تحدث كل ثانية و هو الذي يجعل الوقت يظهر بشكل صحيح في شريط المهام.

وأنا جاهز لأي اسفسارات أخرى حول البرنامج أو فكرة جديدة لتطوير هذه التجربة.

إلى اللقاء في التجربة التالية.

مع التحيات.

#2

أخي عادل ،

يعطيك ألف ألف ألف عافية ، الله لا يحرمنا من مشاركاتك وخبراتك وتجاربك :) ...

أنت استخدمت ال SDI بسبب أنه يحتوي على Status Bar جاهز .. ولكن في بعض الأحيان نحتاج إلى استخدام ال Status Bar في مشاريع ال Dialog Based .. فهلا تفضلت بأن تشرح للشباب الطيبة في المنتدى عن كيفية اضافة ال Status Bar في مشاريع ال Dialog Based :) ؟؟

مع العلم أن العملية ليست مباشرة مثل الدلفي أو الفيجول بايسك بل تحتاج إلى بعض الكود ولكن ليس على مستوى الصعوبة ... كان بودي أن أتحدث عن هذا ولكن أعتذر بسبب انشغالي في تحضير دروس الفيجوال سي ، ولكن أنا على يقين أنك يا أخي عادل حتكون قدها وقدود ...

:):)

Coding on the Cloud and for the Cloud!

My Blog

#3

السلام عليكم.

انت بتأمر أخي هاني :):) و مية السلامة:):).

لقد قمت ببناء برنامج بسيط من أجل إضافة شريط الحالة StatusBar إلى Dialog و يمكن الحصول على الشيفرة من الوصلة التالية:

http://arabteam.nicmatic.com/atassi/adel/statusbar.zip

و فكرة البرنامج بسيطة و هي عملية اشتقاق Class جديد من CStatusBar وهو ال Class الخاص بشريط الحالة.

ثم قمت بعملية Override لكل من التوابع التالية Create و OnTimer و Destroy حيث قمت بتعريف مؤقت Timer من أجل عملية تحديث بيانات شريط الحالة.

لن أقوم بشرح البرنامج بشكل كامل بل سأترك لكم محاولة فهمه و أنا جاهز لأي استفسار .

مع التحيات.

#4

سلمت يداك أخي عادل ..

البرنامج سهل وهو يعلم بالاضافة إلى ال StatusBar كيفية تنظيم البرنامج حيث إذا أردنا أن نعطي خواص جديدة لل StatusBar الحالي يكفي أن نشتق منه ونعطي الميزات الجيدة في الكلاس الجديد ...

:)

Coding on the Cloud and for the Cloud!

My Blog

#5

ميييية السلااااااااامة :):):):):)

هذا الموضوع مغلق.

مواضيع مشابهة