ج++:الخطوة 1:ExtractIconEx.الخطوة 2:؟؟؟؟الخطوه 3:SetMenuItemBitmaps

StackOverflow https://stackoverflow.com/questions/96414

  •  01-07-2019
  •  | 
  •  

سؤال

أقوم بتجربة إضافة أيقونات إلى ملحق 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 حقيقية

قوائم نمط فيستا... نمط فيستا + رد الاتصال قبل فيستا

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