Je suis à la recherche d'un moyen de rendre le soulignement rouge squiggly dans un contrôle Rich Edit (j'utilise la version 4.1 avec Msftedit.dll). Je suis en mesure de produire en soulignant squiggly avec ce code:Comment changer la couleur de soulignement dans un contrôle Rich Edit (Win32/C)
CHARFORMAT2 format;
format.cbSize = sizeof(format);
format.dwMask = CFM_UNDERLINETYPE;
format.bUnderlineType = CFU_UNDERLINEWAVE;
SendMessage(hWndEdit,EM_SETCHARFORMAT, SCF_SELECTION, (LPARAM)&format);
La documentation MSDN ne précise pas comment changer la couleur de soulignements, tout le texte (avec soulignements) et l'arrière-plan du texte. J'ai trouvé du code qui dit d'utiliser le quartet inférieur pour le type souligné (CFU_UNDERLINEWAVE) et le supérieur pour la couleur. Donc, j'ai essayé:
format.bUnderlineType = CFU_UNDERLINEWAVE | 0x50;
Mais cela ne fonctionne pas.
MISE À JOUR
Je l'ai testé ce code avec la version 3.0 (Riched20.dll) et il fonctionne. Donc, le problème réside dans 4.1. La fonctionnalité a-t-elle été supprimée ou déplacée ailleurs?
Il ne fonctionne pas dans la version 6 (la DLL utilisée par le bureau 2007) également.
Votre solution originale a fonctionné pour moi (testé sur Windows XP, 7, 8, 8.1, 10). Le seul inconvénient est que vous devez utiliser une implémentation assez ancienne de richedit (à savoir 'RICHEDIT20W' ou une version similaire), ce qui peut ne pas être un problème pour la plupart des utilisateurs. –