Bonjour à tous, en utilisant l'owner drawn, j'ai customisé un combo (droplist) afin de faire un sélecteur de couleurs.
Je recupere les infos via le WM_DRAWITEM et j'envoi le tout à une fonction de dessin.
La fonction fonctionne parfaitement, mais le contrôle scintille trop j'ai l'impression.
Y aurait-il un moyen d'optimiser cela ? Voici le code de ma fonction de dessin:
void FastDrawCombo(LPDRAWITEMSTRUCT draw,const char *str) {
HBRUSH brush;
COLORREF color;
RECT rc;
if (draw->itemID != -1) {
SetBkMode(draw->hDC, TRANSPARENT);
color = (COLORREF)draw->itemData;
rc = draw->rcItem;
//Colorie tout le rectangle en blanc (afin d'effacer le background)
brush = CreateSolidBrush(RGB(255,255,255));
FillRect(draw->hDC,&rc,brush);
DeleteObject(brush);
//Dessin de la bordure du rectangle contenant la couleur
brush = CreateSolidBrush(RGB(192,192,192));
rc.left += 3;
rc.top += 2;
rc.right -= 3;
rc.bottom -= 2;
FillRect(draw->hDC,&rc,brush);
DeleteObject(brush);
brush = CreateSolidBrush(color);
rc.left += 1;
rc.top += 1;
rc.right -= 1;
rc.bottom -= 1;
//Ajoute la couleur desirée
FillRect(draw->hDC,&rc,brush);
DeleteObject(brush);
//Dessin du rectangle focus
if (((draw->itemAction & ODA_FOCUS) || (draw->itemAction & ODA_DRAWENTIRE))
&& (draw->itemState & ODS_SELECTED) && (draw->itemState & ODS_FOCUS)) {
rc.left -= 2;
rc.top -= 2;
rc.right += 2;
rc.bottom += 2;
DrawFocusRect(draw->hDC,&rc);
}
}
}