أهلاً وسهلاً بكم في منتديات شبكة إب الخضراء

الدليل السياحي     |     ألبوم الصور     |     الموسوعة الخضراء      |      الخضراء نيوز

صور رووووووووووووووعه  آخر رد: الرياشي2    <::>    صورة ترفع الراس ( الله اكبر )  آخر رد: الرياشي2    <::>    ياليل بعدكـ ليالي اهداء  آخر رد: سيف ابن ذي يزن    <::>    كتاب نظرات في مسيرة الحركات الاسلاميه في اليمن . للشيخ عبد المجيد الريمي  آخر رد: محتسب    <::>    جامعة إب تحتفل بتخرج (1500) طالب وطالبة وتكرم الأوائل..!!؟؟  آخر رد: اسر العيون    <::>    أيام لا تعوض ......))))  آخر رد: القلب الصامت    <::>    فساتين أطفال نعومية موضة 2010  آخر رد: وسام القمر    <::>    مقهى للراغبين بالبكاء ..!!!  آخر رد: الرياشي2    <::>    هل لديك الجرءه للاجابة؟؟  آخر رد: السعيد الصياد    <::>    حديث أم زرع ... أرجو تشاركون في تفسير ألفاظه ..!!  آخر رد: ابن إب الخضراء    <::>    اخواني تفضلوا ..........  آخر رد: ط سات    <::>    اريد جواب ياعرب  آخر رد: قائد المحمدي    <::>    الصور المكذوبه على قدرة الله ..... هنا توضيح الحقيقه  آخر رد: النجاح    <::>    تقرير دولي يحذر من تحول اليمن إلى دولة فاشلة ويؤكد أن هذه الديمقراطية هشة ومشوهة  آخر رد: النجاح    <::>    دليل هاتف التلفون الثابت والسيار سبأفون mtn يمن موبايل نسخة كاملة 2009  آخر رد: أيمن-اليمن    <::>   

جديد المواضيع:

 

 

أبحث في الموقع >

 

حملة التعريف برموز أعلام اليمن ( شارك معنا )


العودة   منتديات شبكة إب الخضراء > المنتديات التقنية > منتدى التصميم والبرمجة > منتدى لغات البرمجة

منتدى لغات البرمجة قسم لغات البرمجة والمبرمجين ، Visual Basic ، ++C ، java ، Oracle ، ASP.NET ، VB.NET ،ASP, CSS, HTML, DHTML, MSHTML, php



إضافة رد
 
LinkBack أدوات الموضوع تقييم الموضوع
  #1 (permalink)  
قديم 12-12-2006, 03:10 AM
الصورة الرمزية أنس الأبطح
مشرف منتديات الكمبيوتر والأنترنت
 





عناصر الcontrol في ال c++

الفصل الثاني:

استخدام العناصر( Control) في بناء التطبيقات:

مقدمة:

لاحظ أخي العزيز أن أي تطبيق من تطبيقات نظام التشغيل Windows يحوي على أزرار أو مربع خيارات أو قضيب تمرير

و تُعرف هذه الأشياء بالعناصر controls و التي تستخدم في بناء نظام التشغيل نفسه و يستخدمها أيضا برنامج الVC++

في بناء تطبيقاته الأساسية و التي لا تعتمد على مكونات خارجية و سندرس في هذا البحث الثاني:

ما هي العناصر الأساسية في الVC++
كيف تصرح و تربط المتغيرات بهذه العناصر
كيف توافق القيمة بين المتغير و العنصر
كيف تحدد مجال أوامر التطبيق
كيف تعامل الأحداث مع العناصر controls
كيف تغير من مظهر العنصر controls أثناء تنفيذ التطبيق
عناصر النوافذ الأساسية:

يوجد عدد كبير من العناصر الأساسية التي يتم من خلالها بناء نظام التشغيل و تتضمن هذه العناصر عناصر مثل
الأزار و مربعات الخيارات و و و, و سنقوم اليوم بالتعامل مع هذه العناصر:

Static text:

و هي المنطقة التي يتم فيها كتابة عبارة معينة مثلا على النافذة

Edit box:

المنطقة التي يمكنك من خلالها تحرير كتابة معينة داخل البرنامج
Command button:

الزر الذي يتم ربط بحدث عند الضغط عليه

Check box:

مربع التحقق و الذي يستخدم لإضافة خصائص معينة على حدث معين مثلا

Radio button:

زر الخيارات و يستخدم لاختيار حدث معين من مجموعة أحداث

combo box و ال list box:

لعرض الخيارات بشكل قائمة منبثقة

-طبعا كل هذه العناصر يمكنك استعمالها في تطبيقات الVC++ و توضح الصورة التالية هذه العناصر:


ملاحظة بسيطة: قمنا بشرح عمل العناصر بشكل بسيط لأننا سنقوم باستخدامها بشكلها الأجنبي للمحافظة على المصطلحات

Static Text:

يكون استخدام هذا العنصر لتقديم عبارة أو جملة للمستخدم تظهر ضمن النافذة , و أيضا لا يعطي هذا العنصر إمكانية للمستخدم

بتغير الكتابة الموجودة ضمن هذا العنصر , فهي إذن تعتبر من العناصر القابلة للقراءة فقط , طبعا يستطيع مبرمج التطبيق

أن يغير كتابة الاسم عبر كود بسيط يقوم بكتابته داخل هذا المشروع..

Edit Box:

صندوق يمكن للمستخدم أن يكتب داخله أو يغير ما كان مكتوبا فيه, و تعتبر هذا العنصر أحد العناصر الأساسية المسؤولة

عن إدخال البيانات , و يمكن للمبرمج أن يحدد مجال محدد لعدد الحروف التي يمكن للشخص كتابتها, طبعا هذه الأداة

لا تقدم للمستخدم خيارات بتغير هيئة الخط و نوعه

Command Button:

و هو عبارة عن زر يقوم بعمل معين عندما يقوم مستخدم التطبيق بالضغط عليه, و يكتب على هذا العنصر أسم بسيط

يدل على غاية هذا الزر و الهدف من ضغطه , كما يمكن أن يكون الشكل الخارجي للزر هو عبارة عن صورة

Check Box:

هو عبارة عن مربع قابل للضغط أما لتفعيل خياره أو إزالة تفعيل هذا الخيار , يستخدم هذا العنصر لتحديد تفاصيل

الحالة بفتح أو إغلاق هذا الخيار , و يمكن اعتبارها بمثابة مفتاح لاختيار أو عدم اختيار شيء معين, و في كلا الحالتين

فإنها تستخدم بشكل بسيط ضمن المشروع لفتح أو إغلاق أي متحول..

Radio Button:

هو عبارة عن دائرة قابلة للضغط , وعند الضغط عليها فأن هذه الدارة تمتلئ ببقعة صغيرة, استخدام هذا العنصر

قليل مقارنة مع استخدام ال Check box, و لكن عادة يستخدم هذا العنصر مع مجموعة مماثلة من العناصر

التي لها نفس النوع لتمكن المستخدم من اختيار أحدها , طبعا لا يمكن من خلال هذا العنصر تفعيل أكثر من

خيار في وقت واحد أنما يتم اختيار أحد هذه الخيارات التي تؤدي لحدوث حدث معين ...

combo box و ال list box:

هو عبارة عن صندوق يحوي على خيارات منبثقة بشكل قائمة , و يرتبط كل خيار منها مع قيمة معينة أو حدث معين

يمكنك استخدام هذا العنصر لتزود المستخدم بقائمة منبثقة تحوي على عدد كبير من الخيارات و لا يكون لها حيز كبير

من نافذة المشروع الذي تقوم ببناءه, فيستطيع المستخدم من خلال هذا العنصر اختيار أو كتابة الخيار الذي يريده

فهي أيضا أداة يمكن استخدامها لتذكير المستخدم بالخيارات ..

إضافة العناصر controls داخل نافذة المشروع:

إن التطبيق الذي سنقوم ببناءه اليوم سيحوي على عدد من العناصر ضمن نافذة حوارية مفردة كما هو موضح في الشكل

أسفل هذا الشرح , و هذه العناصر يحتوي على عدد من الارتباطات المختلفة , و سنضع في قمة نافذة المشروع حقل يمكنك

من خلاله كتابة رسالة ضمنها, و التي يتم عرضها للمستخدم عندما يقوم بالضغط على الزر بجانب منطقة الكتابة المخصصة

كما يوجد أسفل مربع الكتابة زران مسؤولان الزر الأول default message يقوم بكتابة الرسالة الأساسية( الافتراضية)

ضمن صندوق الكتابة أو الزر الثاني و هو clear message فهو مسؤول عن حذف الرسالة التي قمت بكتابها ضمن

مربع الكتابة Edit box و أسفل هذين الزرين يوجد عنصر الخيارات المنبثقة list box و الذي يحوي على قائمة من

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

Run Program يتم تشغيل البرنامج الذي تم اختياره, و تحت جميع هذه الأزار يوجد مجموعتين من صناديق التحقق Check box

و صناديق التحقق هذه تقوم بالتأثير على طريقة عرض و عمل الأزرار التي فوق .....




البدء بهذا المشروع:

سنستخدم ما تعلمناه في البحث الماضي للبدء بهذا المشروع, أي علينا عمل AppWizard جديد و لنسميه Ch2 مثلا

الآن نقوم بوضع العناصر الموجودة في قضيب الأدوات Controls و وضعها على نافذة المشروع بما يوافق الشكل السابق

و إعادة تغير خصائصها و أسمها بالضغط على كل عنصر بزر الفأرة الأيمن ثم اختيار Properties بما يناسب الجدول التالي:

إعدادات الخاصة
الخصائص
العنصر

IDC_STATIC
ID
Static Text

Small Example :how to use controls
Caption


IDC_STATICMSG
ID
Static Text

Enter a &Message:
Caption


IDC_STATICPGM
ID
Static Text

Run a &Program:
Caption


IDC_MSG
ID
Edit Box

IDC_SHWMSG
ID
Button

&Show Message
Caption


IDC_DFLTMSG
ID
Button

&Default Message
Caption


IDC_CLRMSG
ID
Button

&Clear Message
Caption


IDC_RUNPGM
ID
Button

&Run Program
Caption


IDC_EXIT
ID
Button

E&xit
Caption


IDC_PROGTORUN
ID
Combo Box

IDC_STATIC
ID
Group Box

Enable Actions
Caption


IDC_STATIC
ID
Group Box

Show Actions
Caption


IDC_CKENBLMSG
ID
Check Box

&Enable Message Action
Caption


IDC_CKENBLPGM
ID
Check Box

E&nable Program Action
Caption


IDC_CKSHWMSG
ID
Check Box

S&how Message Action
Caption


IDC_CKSHWPGM
ID
Check Box

Sh&ow Program Action
Caption









بعد أن تقوم بوضع العناصر و تهيئتها وفق الجدول السابق قم الآن بفتح خصائص الcombo box الموجودة في نافذة المشروع

ثم ادخل إلى قسم Data و قم بإضافة القيم التالية إلى هذا العنصر و قم بالضغط على Control+Enter للانتقال إلى السطر

الأدنى و هذه القيم قي على الترتيب: Notepad-Paint-Solitaire كما هو موضح بالشكل التالي:




تحديد أوامر الزر TAB:

الآن بعد أن قمت بوضع العناصر على النافذة و قمت بتحديد خصائصها وفق الجدول السابق , عليك الآن أن تحدد حركة

تفعيل العناصر عند الضغط على زر TAB ( أي الانتقال من زر لآخر) ويكون ذلك عبر الخطوات التالية:

1- قم باختيار مقبض النافذة الخاصة بالمشروع أو أحد عناصر التحكم التي قمت بوضعها

2- قم الآن بالذهاب إلى قائمة LayOut ثم اختير الأمر TAB Order أو Ctrl+D, ستلاحظ الآن ظهور أرقام بجانب العناصر

تدل على ترتيب الحركة بين العناصر عند الضغط على زر TAB و يظهر هذا في الصورة التالية:


3- الآن باستخدام زر الفأرة قم بالضغط على كل مربع بداخله رقم ليقوم البرنامج بإعادة ترتيب الأرقام ابتداء

من أول مربع قمت بالضغط عليه بواسطة الفأرة و انتهاء بآخر زر

4- لتقوم بتثبيت هذا التغير لمشروع قم مرة ثانية بالذهاب إلى قائمة LayOut ثم اختر TAB Order مرة ثانية

أو اضغط على زري Ctrl+D

إضافة متغيرات إلى العناصر:

عند هذه النقطة و إذا كنت من مبرمجي الVisual Basic أو الPowerBuilder , ستلاحظ في هذا المقطع أنك بدأت

تستخدم مفاهيم جديدة داخل بيئة VC++ فقط , و هذه المفاهيم تتعلق بكتابة الكود داخل البرنامج , أي ربط و التصريح

عن المتغيرات الموجودة داخل المشروع , كما تتعلق أيضا بما يشاهد مستخدم المشروع من تغيرات تطرأ على العناصر

لذا أصبح علينا الآن أن نتساءل عن طريقة التصريح عن المتغيرات و الثوابت داخل البرنامج و التي ترتبط بدورها أيضا

بالعناصر التي قمت بوضعها على نافذة المشروع , و هنا يمكننا اتباع الخطوات التالية لحل هذا التساءل:

1- قم بفتح Class Wizard كما تعلمت في البحث الماضي

2- قم باختيار قسم Member Variables كما في الصورة أدناه


3- قم باختيار الID الخاص بأحد العناصر و الذي تريد أن تربطه مع أحد المتغيرات و لكن الID على فرض هو IDC_MSG

4- قم الآن بالضغط على زر Add Variable

5- في نافذة Add Member Variable قم بكتابة أسم للمتغير ثم قم بتحديد ال category و نوع المتغير ليصبح موافق للصورة..


6- قم بإعادة الخطوات من 3 إلى 5 مع جميع العناصر Controls لتوافق الجدول التالي:

نوع المتغير
Category
أسم المتغير
عنصر التحكم
على الترتيب:

CString Value m_strMessage
IDC_MSG
CString
Value
m_strProgToRun
IDC_PROGTORUN
BOOL Value
m_bEnableMsg
IDC_CKENBLMSG
BOOL
Value
m_bEnablePgm
IDC_CKENBLPGM
BOOL
Value
m_bShowMsg
m_bShowMsg

BOOL
Value
m_bShowPgm
CKSHWPGM



7- بعد أن تقوم بإجراء جميع الإضافات المناسبة على المتغيرات قم بالضغط على زر OK ليتم إغلاق نافذة Class Wizard

ربط التوابع مع العناصر:

قبل أن نقوم بإضافة الكود إلى كل عنصر من عناصر نافذة المشروع , سنقوم بإضافة كود بسيط ليساعد على تحليل المتغيرات,

لذا سنقوم بهذه الخطوات البسيطة لإضافة الكود بشكل جيد:

1- قم بفتح Class Wizard ثم الذهاب إلى قسم Message Maps الآن قم باختيار التابع OnInitDialog من قائمة التوابع

member functions و عليك طبعا أن تقوم بالبحث عن هذا التابع لتصل إلى النتيجة


2- قم بالضغط على زر Edit Code لتدخل داخل الشيفرة المصدرية الخاصة بالتابع OnInitDialog.

3- قم بإيجاد المنطقة TODO التي يمكنك من خلالها إضافة المود الذي تريد للتابع

4- الآن قم بكتابة الكود التالي:

1: BOOL CDay2Dlg::OnInitDialog()
2: {
3: CDialog::OnInitDialog();
4:
5: .
6: .
7: .
8:
9: // TODO: Add extra initialization here
10:
11: ///////////////////////
12: // الكود تبدأ من هنا
13: ///////////////////////
14:
15: // وضع رسالة افتراضية في صندوق الكتابة
16: m_strMessage = "Place a message here";
17:
18: // قم بوضع إشارة صح أمام جميع ال check boxes
19: m_bShowMsg = TRUE;
20: m_bShowPgm = TRUE;
21: m_bEnableMsg = TRUE;
22: m_bEnablePgm = TRUE;
23:
24: // تحديث مربع الحوار مع القيمة الجديدة
25: UpdateData(FALSE);
26:
27: ///////////////////////
28: // ينتهي الكود هنا
29: ///////////////////////
30:
31: return TRUE;
32: }
إغلاق التطبيق:

أن أحد أهم الأشياء التي تجب أن تحرص عليها هي أن يتمكن مستخدم مشروعك من إغلاق التطبيق الذي قمت ببرمجته

لأننا كما تذكر قمنا بحذف الزرين About و Cancel و أضفنا عوضا عنهما زر لإغلاق المشروع , يمكنك إضافة كود

بسيط على زر Exit ليصبح هذا الزر قادرا على إغلاق النافذة , لذا علينا اتباع الخطوات التالية لعمل ذلك:

1- قم بفتح Class Wizard ثم قم باضافة تابع إلى IDC_EXIT و اجعله يعمل عند الضغط عليه بكبسة زر واحدة أي بجعل

BN_CLICKED كما تعلمنا في دروس سابقة

2- قم بالضغط على زر Edit Code لتنتقل إلى المكان المخصص لهذا التابع و الذي يمكنك من هناك إضافة الكود

3- قم بإضافة الكود التالي:

1: void CDay2Dlg::OnExit()
2: {
3: // TODO: Add your control notification handler code here
4:
5: ///////////////////////
6: // هنا يبدأ الكود
7: ///////////////////////
8:
9: // كود الخروج من البرنامج
10: OnOK();
11:
12: ///////////////////////
13: // هنا ينتهي الكود
14: ///////////////////////
15: }
- إن استدعاء التابع الوحيد داخل التابع OnExit لإغلاق نافذة المشروع و الخروج من البرنامج يتم عبر وضع أحد التابعين التالين:

أما OnOK أو OnCancel...

إظهار رسالة للمستخدم التطبيق:

لنتمكن من إظهار الرسالة التي قام المستخدم بكتابتها ضمن مربع الكتابة (edit box), علينا بكل بساطة إضافة التابع الذي

تعلمناه سابقا و هو MessageBox ضمن زر Show Message ليصبح الكود كالتالي:

1: void CDay2Dlg::OnShwmsg()
2: {
3: // TODO: Add your control notification handler code here
4:
5: ///////////////////////
6: // الكود تبدأ هنا
7: ///////////////////////
8:
9: // إظهار رسالة للمستخدم تتضمن النص الذي قام بكتابته ضمن صندوق الكتابة
10: MessageBox(m_strMessage);
11:
12: ///////////////////////
13: // الكود ينتهي هنا
14: ///////////////////////
15: }
- إذا قمت بعمل compile لهذا التطبيق في هذه المرحلة , ستلاحظ وجود مشكلة بالكود , فهو يقوم بعرض متغير حرفي

يعبر عن الكتابة التي قمت بكتابتها أي المتغير m_strMessage داخل التابع OnInitDialog , أي لا يظهر ما قمت بكتابته

ضمن صندوق الكتابة (edit box) إنما يعرض المتحول فقط , و تحدث هذه المشكلة لأن المتغير لا يطرأ عليه أي تحديث

مع محتويات العنصر (control) في النافذة, عليك هنا أن تستدعي الUpdateData جاعلا من قيمته = TRUE

لأخذ قيمة العنصر و تحديث المتغير قبل استدعاء التابع MessageBox و ذلك بكتابة الكود التالي:

1: void CDay2Dlg::OnShwmsg()
2: {
3: // TODO: Add your control notification handler code here
4:
5: ///////////////////////
6: // هنا تبدأ الكود
7: ///////////////////////
8:
9: // تحديث متغير نص الرسالة مع ما يقوم المستخدم بكتابته
10: UpdateData(TRUE);
11:
12: // إظهار رسالة للمستخدم
13: MessageBox(m_strMessage);
14:
15: ///////////////////////
16: // هنا ينتهي الكود
17: ///////////////////////
18: }
- إذا قمت الآن بعمل compile للمشروع ستلاحظ زوال المشكلة السابقة..
مسح الرسالة المكتوبة ضمن مربع الكتابة:

طبعا يمكن للمستخدم أن يقوم بمسح الرسالة لوحده , أما هذه الطريقة فتستخدم للسرعة , أي يتم مسح كل ما كتبه المستخدم

بكبسة زر واحد , يمكنك إضافة ارتباط مع تابع يقوم بمسح محتويات صندوق الكتابة داخل زر Clear Message, يمكنك

كالعادة إضافة ارتباط مع تابع لهذا الزر عبر ال Class Wizard( كما فعلنا سابقا لأحد العناصر) ثم إضافة الكود التالي:

1: void CDay2Dlg::OnClrmsg()
2: {
3: // TODO: Add your control notification handler code here
4:
5: ///////////////////////
6: // الكود يبدأ هنا
7: ///////////////////////
8:
9: // مسح الرسالة
10: m_strMessage = "";
11:
12: // تحديث العرض
13: UpdateData(FALSE);
14:
15: ///////////////////////
16: // الكود ينتهي هنا
17: ///////////////////////
18: }
منع و إخفاء عناصر الرسائل:

إن آخر شيء تريد أن تعمله مع عناصر التحكم هي إضافة تابع ل Enable Message Action و Show Message Action

و يقوم ال Enable Message Action بتمكين و منع التعامل مع العناصر الذي يقوم بإظهار رسالة إلى المستخدم أي عندما

يقوم المستخدم بوضع إشارة صح أمام ال check box فإن العناصر controls تكون مفعلة و قابلة للعمل , أما إزالة هذه

الإشارة فهذا يجعل ال controls غير قابلة للعمل , أما ال Show Message Action تسمح لك بإظهار و إخفاء العناصر

الآن سنقوم بكتابة الكود الخاص بكلا ال check box:

1: void CDay2Dlg::OnCkenblmsg()
2: {
3: // TODO: Add your control notification handler code here
4:
5: ///////////////////////
6: // الكود يبدأ هنا
7: ///////////////////////
8:
9: // للحصول على قيمة النافذة
10: UpdateData(TRUE);
11:
12: // إذا كان صندوق التحقق مفعلا فقم بإظهار الرسالة
13: if (m_bEnableMsg == TRUE)
14: {
15: // نعم,اذن قمت بتفعيل الرسالة
16: // تتعامل مع إظهار رسالة للمستخدم
17: GetDlgItem(IDC_MSG)->EnableWindow(TRUE);
18: GetDlgItem(IDC_SHWMSG)->EnableWindow(TRUE);
19: GetDlgItem(IDC_DFLTMSG)->EnableWindow(TRUE);
20: GetDlgItem(IDC_CLRMSG)->EnableWindow(TRUE);
21: GetDlgItem(IDC_STATICMSG)->EnableWindow(TRUE);
22: }
23: else
24: {
25: // لا , قم بمنع كافة العناصر من العمل
26: // لتتعامل مع إظهار رسالة للمستخدم
27: GetDlgItem(IDC_MSG)->EnableWindow(FALSE);
28: GetDlgItem(IDC_SHWMSG)->EnableWindow(FALSE);
29: GetDlgItem(IDC_DFLTMSG)->EnableWindow(FALSE);
30: GetDlgItem(IDC_CLRMSG)->EnableWindow(FALSE);
31: GetDlgItem(IDC_STATICMSG)->EnableWindow(FALSE);
32: }
33:
34: ///////////////////////
35: // الكود ينتهي هنا
36: ///////////////////////
37: }
38:
39: void CDay2Dlg::OnCkshwmsg()
40: {
41: // TODO: Add your control notification handler code here
42:
43: ///////////////////////
44: // الكود يبدأ هنا
45: ///////////////////////
46:
47: // خذ قيمة الشاشة
48: UpdateData(TRUE);
49:
50: // اذا قام المستخدم بتفعيل إظهار رسالة معينة
51: if (m_bShowMsg == TRUE)
52: {
53: // اذا قام المستخدم بتفعيل صندوق التحقق, اذن قم بإظهار كافة العناصر
54: // للتعامل مع إظهار رسالة للمستخدم
55: GetDlgItem(IDC_MSG)->ShowWindow(TRUE);
56: GetDlgItem(IDC_SHWMSG)->ShowWindow(TRUE);
57: GetDlgItem(IDC_DFLTMSG)->ShowWindow(TRUE);
58: GetDlgItem(IDC_CLRMSG)->ShowWindow(TRUE);
59: GetDlgItem(IDC_STATICMSG)->ShowWindow(TRUE);
60: }
61: else
62: {
63: // اذا كان الجواب لا اذن قم بإخفاء جميع العناصر
64: // للتعامل مع إظهار رسالة للمستخدم
65: GetDlgItem(IDC_MSG)->ShowWindow(FALSE);
66: GetDlgItem(IDC_SHWMSG)->ShowWindow(FALSE);
67: GetDlgItem(IDC_DFLTMSG)->ShowWindow(FALSE);
68: GetDlgItem(IDC_CLRMSG)->ShowWindow(FALSE);
69: GetDlgItem(IDC_STATICMSG)->ShowWindow(FALSE);
70: }
71:
72: ///////////////////////
73: // هنا ينتهي الكود
74: ///////////////////////
75: }
الآن تستطيع استيعاب بعض معاني هذه التوابع, أولاً تقوم بتحديث المتغير إلى القيمة الخاصة بالcontrols داخل النافذة , ثم يتم التحقق

من قيمة المتغير المنطقي boolean المتصل بصندوق التحقق check box و إذا كانت قيمة المتغير المنطقي تعبر عن القيمةTRUE

فهذا يعني أنها ستقوم بتفعيل أو إظهار العنصر, أما إذا كانت قيمة المتغير المنطقي تعبر عن القيمة False فهذا يعني أنها ستقوم

فعدم تفعيل أو إخفاء العنصر.

-عند هذه النقطة يبدأ الكود بالتحول نحو الأصعب , و يعبر هنا التابع GetDlgItem عن الID الخاص بالعنصر الذي ستقوم بعمل

تغيرات عليه, و يمكنك استدعاء هذا التابع أثناء تشغيل التطبيق ,أما عن المرحلة الثانية من الأوامر فهي تحديد مكان استدعاء

التوابع المرتبطة بعنصر control ما . سيتم بإذن الله التطرق إلى هذه الأمور بالمراحل القادمة.

- أما بالنسبة للتوابع functions الثانية و التي قمنا باستدعائها أي EnableWindow و ShowWindow فهي من CWnd class

أي يتم استخدامها داخل النوافذ , و ليس داخل العناصر .

تنفيذ تطبيقات أخرى :

إن آخر هدف من أهداف هذا الفصل هي وضع التابع الذي يمكننا من خلاله تشغيل برامج أخرى من خلال تطبيقنا هذا ,
إذا كنت تذكر فقد أضفنا ثلاث أسماء لبرامج داخل بيئة Windows ضمن العنصر combo box , و عندما تقوم بتنفيذ

التطبيق الذي سنقوم بعمله ستلاحظ طهور أسماء البرامج الثلاث ضمن قائمة منسدلة , و يمكنك أن تختار أي برنامج منهم

و لكن حتى يتم تنفيذ هذه البرامج علينا إضافة الكود التالي( ضمن رز Run Program بحيث يقوم هذا الكود بالحصول على قيمة

الCombo Box ثم يقوم بتنفيذ البرنامج):

1: void CDay2Dlg::OnRunpgm()
2: {
3: // TODO: Add your control notification handler code here
4:
5: ///////////////////////
6: // الكود يبدأ من هنا
7: ///////////////////////
8:
9: // للحصول على قيم جديدة من البرنامج
10: UpdateData(TRUE);
11:
12: // التصريح عن تابع حرفي يقوم بتنفيذ البرنامج المكتوب
13: CString strPgmName;
14:
15: // جعل أسم البرنامج في القائمة المنسدلة مساوياً لاسم التابع الحرفي
16: strPgmName = m_strProgToRun;
17:
18: // جعل جميع أسماء البرامج خارج الحالة
19: strPgmName.MakeUpper();
20:
21: // إذا قام المستخدم باختيار تشغيل برنامج الرسام
22: if (strPgmName == "PAINT")
23: // كود تنفيذ برنامج الرسام
24: WinExec("pbrush.exe", SW_SHOW);
25:
26: // إذا قام المستخدم باختيار تشغيل برنامج المفكرة
27: if (strPgmName == "NOTEPAD")
28: // كود تنفيذ برنامج المفكرة
29: WinExec("notepad.exe", SW_SHOW);
30:
31: // إذا قام المستخدم باختيار تشغيل لعبة السوليتر
32: if (strPgmName == "SOLITAIRE")
33: // كود تنفيذ لعبة السوليتر
34: WinExec("sol.exe", SW_SHOW);
35:
36: ///////////////////////
37: // الكود ينتهي هنا
38: ///////////////////////
39: }
- كالعادة نلاحظ دائما استخدام التابع UpdateData للحدوث على آخر تحديث جرى فعله ضمن التطبيق الذي نقوم ببرمجته

ثم قمنا بالتصريح عن متحول حرفي Cstring و جعلنا القيمة التي يأخذها العنصر combo box مساوية لقيمة هذا المتحول

أما استخدامنا للتعليمة MakeUpper و التي ترجع حالة المتحول Cstring إلى ما كان عليه أي تجعل combo box لا يشير

إلى أي حالة حتى لا يقوم التابع UpdateData بجعل القيمة متحولة من True إلى Flase .

خاتمة هذا الفصل:

في هذا الفصل عزيزي القارئ قمتَ بالتعرف على استخدام بعض العناصر الأساسية ضمن الفيجوال سي ++6 , و تعلمت أيضاً

كيف تقوم بالتصريح عن المتغيرات , و تعلمت أيضا كيف تقوم باستدعاء برامج أخرى من ضمن التطبيق الذي تقوم بعمله


......................

................

.........

.....

..

.

.




منقول

 

الصور المرفقة
ملاحظات :   S أفحص الملف المرفق بأي برنامج مضاد للفيروسات
S قم بمراسلة مشرف القسم بخصوص أي مرفق يوجد به فيروس
S منتديات شبكة إب الخضراء غير مسئولة عن ما يحتويه المرفق من بيانات

من مواضيع : أنس الأبطح 0 لعبة NFS:Undercover كااملة و بخمس روابط مباشرة
0 لعبة CRYSiS Warhead [2008] - English حصراً
0 لعبة sky force لى سيرفر فيل فكتوري حصرياااااااااااا
0 العبه الاسطوره Prince of Persia III مضغوطه بحجم 275 ميجا ! كامله وعلى أكثر من سيرفر
0 اللعبة الشيقة The Simpsons - Hit & Run
0 أكبر شروحات الهكر بالفيديو بين يديك شو مستني

__________________



فلسطين...عائدون

قطرة المــاء تثقب الحجر ... ليس بالعنف و لكن بتكرار المحاولة

رد مع اقتباس
قديم 12-14-2006, 05:13 AM   #2
 
عـ العبيدي ــلي
عضو شرف

 
الصورة الرمزية عـ العبيدي ــلي

 

الحالة: عـ العبيدي ــلي غير متواجد حالياً

 
 

هلا وغلا فيك اخ انس


وجاري مشاهدة الصور وشكرا الف شكر على الموضوع الممتاز


سلام

 

    رد مع اقتباس
قديم 12-16-2006, 09:42 AM   #3
 
أنس الأبطح
مشرف منتديات الكمبيوتر والأنترنت

 
الصورة الرمزية أنس الأبطح

 

الحالة: أنس الأبطح غير متواجد حالياً

 
 

ألف ألف شكر لك أخي علي العبيدي لمرورك ....

 

    رد مع اقتباس
قديم 06-01-2008, 12:40 PM   #4
 
دار السلام
عضو جديد
 

الحالة: دار السلام غير متواجد حالياً

 
 

رد: عناصر الcontrol في ال c++

السلا م عليكم ورحمة الله وبركاته
شكرا
دار السلام

 

    رد مع اقتباس
قديم 06-09-2008, 05:29 PM   #5
 
klose2006
عضو فعال

 
الصورة الرمزية klose2006

 

الحالة: klose2006 غير متواجد حالياً

 
 

رد: عناصر الcontrol في ال c++

أخ أنس

 

    رد مع اقتباس
قديم 08-28-2008, 05:20 PM   #6
 
grtgrte
عضو جديد
 

الحالة: grtgrte غير متواجد حالياً

 
 

رد: عناصر الcontrol في ال c++

ألف ألف شكر لك أخي ....

 

    رد مع اقتباس
قديم 08-28-2008, 05:29 PM   #7
 
grtgrte
عضو جديد
 

الحالة: grtgrte غير متواجد حالياً

 
 

رد: عناصر الcontrol في ال c++

ألف ألف شكر لك أخي ....

 

    رد مع اقتباس
قديم 09-01-2008, 04:27 AM   #8
 
فارس الفيصل
عضو جديد
 

الحالة: فارس الفيصل غير متواجد حالياً

 
 

رد: عناصر الcontrol في ال c++

الف شكر لك اخوي على هالموضوع المفيد

 

    رد مع اقتباس
قديم 09-04-2008, 02:47 PM   #9
 
أنس الأبطح
مشرف منتديات الكمبيوتر والأنترنت

 
الصورة الرمزية أنس الأبطح

 

الحالة: أنس الأبطح غير متواجد حالياً

 
 

رد: عناصر الcontrol في ال c++

لا شكر على واجب يا غاليين

و الله نورتووووووووووووووا

 

    رد مع اقتباس
قديم 09-26-2008, 01:18 PM   #10
 
اخوكم عمر
عضو جديد
 

الحالة: اخوكم عمر غير متواجد حالياً

 
 

رد: عناصر الcontrol في ال c++

مشكور اخى الكريم

 

    رد مع اقتباس
إضافة رد



الذين يشاهدون محتوى الموضوع الآن : 1 ( الأعضاء 0 والزوار 1)
 
أدوات الموضوع
تقييم هذا الموضوع
تقييم هذا الموضوع:



الساعة الآن 12:10 PM.

 
Powered by vBulletin® Version 3.7.2, Copyright ©2000 - 2008, Jelsoft Enterprises Ltd. TranZ By Almuhajir
اكبر شبكة يمنية على الشبكة الدولية - الانترنت .. The Biggest Yemeni Network on the International Network - Internet