ج++:الخطوة 1:ExtractIconEx.الخطوة 2:؟؟؟؟الخطوه 3:SetMenuItemBitmaps
سؤال
أقوم بتجربة إضافة أيقونات إلى ملحق Shell.لدي هذا الكود (المعقم لسهولة القراءة) والذي يعمل:
InsertMenu(hmenu, index, MF_POPUP|MF_BYPOSITION, (UINT)hParentMenu, namestring);
الخطوة التالية هي هذا الكود:
HICON hIconLarge, hIconSmall;
ICONINFO oIconInfo;
ExtractIconEx("c:\\progra~1\\winzip\\winzip32.exe", 0, &hIconLarge, &hIconSmall, 1);
GetIconInfo(hIconSmall, &oIconInfo);
//???????
SetMenuItemBitmaps(hParentMenu, indexMenu-1, MF_BITMAP | MF_BYPOSITION, hbmp, hbmp);
ما الذي أضعه ليحل محل ?'s.لقد وجدت محاولات جوجل لهذه المعرفة العديد من النصائح التي فشلت في العمل بها.أي نصيحة حول تشغيل هذا، خاصة على الأجهزة القديمة (على سبيل المثال.لا يوجد إطار عمل صافي، لا يوجد فيستا) موضع تقدير.
المحلول 2
يعمل هذا، على الرغم من أن اللون الخلفي أسود بدلاً من الشفاف.
GetIconInfo(hIconSmall, &oIconInfo);
SetMenuItemBitmaps(hmenu, uMenuIndex+i+popUpMenuCount-1, MF_BITMAP | MF_BYPOSITION, oIconInfo.hbmColor, oIconInfo.hbmColor);
نصائح أخرى
يتمتع نظام التشغيل Vista بدعم مناسب للأيقونات في القوائم، أما في نظام التشغيل ما قبل نظام التشغيل Vista، فيجب عليك استخدام عناصر القائمة التي يرسمها المالك (MF_OWNERDRAW) إذا كنت تريد أيقونات ملونة كاملة مقاس 16 × 16 حقيقية
لا تنتمي إلى StackOverflow