سؤال

لدي تطبيق MFC يستخدم CMENU لشريط القائمة الرئيسي.
لم أتمكن من إنشاء فرعي بنجاح.

يمكنني الحصول على المستوى الأول من الملفات والتحرير والعرض وغيرها وقوائمهم الفرعية، لكن لا يمكنني إنشاء قائمة فرعية من تلك القوائم.

على سبيل المثال، أود أن أكون قادرا على الذهاب إلى ملف> البنود الأخيرة>قائمة العناصر في القائمة الفرعية
يمكنني القيام بذلك بسهولة كافية مع محرر الموارد في VS، ولكن هذا يجب القيام به ديناميكيا.

هل أنا أستخدم الفصل المناسب في CMENU؟ أي اقتراحات حول ما يجب تجربته؟
لم أجد أي برامج تعليمية لائقة. حتى أن أشار لي نحو اليمين سيكون مفيدا.

هل كانت مفيدة؟

المحلول

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

CMenu *subMenu = mainMenu.GetSubMenu( menuPosition );

if( subMenu )
{
    for( unsigned i = 0; i < stringArray.size(); i++ )
    {
        subMenu->AppendMenu( MF_STRING, 400 + i, stringArray[i]);
    }

    subMenu->DeleteMenu( ID_SUBMENU_PLACEHOLDER, MF_BYCOMMAND );
}

نصائح أخرى

اضطررت إلى أن أفعل نفس الشيء اليوم، أنا على VS2008 مع حزمة الميزات (أشياء جديدة UI)، وكانت تنظر إلى العينات، وهناك عينة حول كيفية إضافة عناصر القائمة ديناميكيا (http://msdn.microsoft.com/en-us/library/bb983167.aspx.)

تحتاج إلى تجاوز طريقة CFramewndex :: Onshowpopupmenu.

الأعلى.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top