Tout d'abord, je ne suis pas un développeur C++, je programme principalement en C#. J'essaie d'utiliser la classe ContextMenu (oui je suis au courant de ContextMenuStrip) dans .NET qui est un wrapper autour de CMenu dans mon application.Façon simple d'afficher un bitmap à côté d'un élément de menu dans un CMenu avec une transparence correcte
Comment afficher une image à côté d'un élément de menu présentant une transparence appropriée?
Ce que je l'ai fait jusqu'à présent est d'appeler SetMenuItemBitmaps sur mon élément de menu, voici le résultat ci-joint:
Comme vous pouvez le voir, il y a un fond blanc sur l'élément de menu. C'est tellement frustrant près de ce que je veux. Comment puis-je faire disparaître les problèmes de transparence? J'ai joint l'image exacte je ci-dessous sur cet élément de menu:
Je sais que SetMenuItemBitmaps n'est pas pour les images de couleur.
Les bitmaps sélectionnés et clairs doivent être monochromes. Le système utilise l'opérateur booléen AND pour combiner les bitmaps avec le menu afin que la partie blanche devienne transparente et la partie noire devient la couleur de l'élément de menu . Si vous utilisez des bitmaps couleur, les résultats peuvent être indésirables.
Alors, quelle est la manière correcte (espérons-le simple) de le faire?
EDIT
Une autre chose que j'ai essayé d'appeler a été SetMenuItemInfo, mais je continue à obtenir l'erreur 87 (paramètre non valide).
C'est ce que la structure MENUITEMINFO ressemble avant d'appeler SetMenuItemInfo:
Et les valeurs des paramètres I appel à SetMenuItemInfo sont:
hMenu - La poignée à la Menu contextuel?
uItem-0 (le premier indice de l'élément?)
fByPosition - true
lpmii - (le contenu de la structure ci-dessus)
Il n'y a rien d'anormal avec la structure que je peux voir, donc peut-être vérifier que 'hMenu' est valide?Peut-être tester en appelant 'GetMenuItemInfo()' pour obtenir quelque chose de simple ('fState' par exemple). –
@JonathanPotter J'ai réussi à faire fonctionner SetMenuItemInfo, merci pour la direction. Le seul problème est qu'il ressemble exactement à ce qui précède (pixélisé avec un fond blanc). – test
Est-ce que votre bitmap 32bpp avec alpha pré-multiplié? –