---
ان بناء قائمة منسدلة عادية هي أمر بسيط لمرمجي فيجيوال سي++ , حيث معظم المبرمجين يبدأوا من البرنامج الهيكلي الذي يبنيه معالج تطبيقات MFC .. لكن ماذا عن طريقة إنشاء قائمة منبثقة ؟؟؟
اولا لمن لم يفهم معنى قائمة منبثقة .. إضغط على زر الماوس الايمن في أي مكان هنا.. هذه القائمة التي خرجت إسمها قائمة منبثقة ..
1) قم بإنشاء مشروع جديد من نوع MFC App : قم بتشغيل بيئة التطوير الخاصة بفيجيوال سي++ ثم إختر New ومن صندوق الحوار الذي يخرج إختر( MFC AppWizard(exe ثم إضغط إنتر وفي الخطوة الاولى حدد single document ثم إختر Finish ...
هذه الخطوة لا علاقة لها بالقوائم لكن لكيقية إنشاء مشروع جديد .... شغل المشروع إذا أردت أن ترى كيف يعمل..
2) الان إدخل الى المشروع قائمة جديدة .. وذلك كالتالي : من Insert إختر الامر Recource من صندوق الحوار إختر Menu. - ستخرج قائمة فارغة .. عبئ البند الاول بأي إسم.. الان ستنسدل من هذا البند قائمة .. عبئها بما تشاء..طريقة تعبئة القائمة هي بالضغط بالماوس على المساحة الفارغة وكتابة ما تشاء لا يهمنا الان ما هي الاوامر التي ستكتبها في هذه القائمة؟ لكن بعد تعبئة القائمة إضغط بزر الماوس الايمن على المسافة الفارغة البعيدة عن القائمة واختر الخصائص في الصندوق الذي خرج هناك ID تذكر هذا الـ ID ... وهو غالبا IDR_MENU1.
3) الان سنضيف فئة لمعالجة الرسالة WM_CONTEXMENU ... لا تخف هذا بسيط.. في القائمة على الجهة اليسرى حيث توجد ملفات مشروعك .. إختر اللسان Class لكي تستعرض المشروع حسب الفئات .. إضغط بزر الماوس الايمن على فئة العرض فئة العرض هي الفئة التي إسمها يبدأ ب C وينتهي بـ View ....بعد أن تضغط بزر الماوس الايمن على هذه الفئة إختر من القائمة الخيار: Add Windows Message handler... تخرج لك قائمة إختر الرسالة المراد معالجتها وهي:WM_CONTEXMENU ..إضغط عليها دابل كليك .. سوف تنتقل الى المربع على اليمين .. إضغط OK..
4)الان هل تذكر فئة العرض التي إخترناها قبل قليل .. هناك في اليسار حيث تبدأ ب C وتنتهي بView إضغط على ال + الذي بجوارها .. الان سترى كل الدوال الموجودة في هذه الفئة.. هناك دالله أضيفت جراء الخطوة 3 .. هل تعرفها ؟ نعم هي OnContextMenu إضغط عليها دابل كليك لتحرير الكود .. الان في صندوق الكود تم عرض كود هذه الدالة ..... حرر هذا الكود ليصبح بالشكل التالي:
PHP:--------------------------------------------------------------------------------
void CSdaView::OnContextMenu(CWnd* pWnd, CPoint point)
{
CMenu menu;
menu.LoadMenu(IDR_MENU1);
menu.GetSubMenu(0)-> TrackPopupMenu(TPM_LEFTALIGN|TPM_RIGHTBUTTON,point.x,point.y,this);
}
--------------------------------------------------------------------------------
شغل البرنامج . وبإذن الله سوف تنبثق هذه القائمة عند الضغط على زر الماوس الايمن.