Bonjour j'ai actuellement un problème de rafraichissement de la coloration de bouton je m'explique:
j'ai une application avec des onglets et des liste view. je veux que lorsqu'un item est ajouter a la liste view les bouton correspondant changent de couleur jusque la aucun problème voici un extrait du code, plus loin.
Mon problème est pour forcer un rafraichissment!
Al'état actuel le bouton n'est changé de couleur que si une autre fenêtre repasse sur la page ou que je fait disparâitre/réaparaitre le bouton ....
Si quelqu'un a une idée ...
case WM_DRAWITEM:
//gestion des bouton seulement
//Récupération du pointeur vers le hdc
lpdis = (LPDRAWITEMSTRUCT)lParam;
//récupération du texte du bouton
tmp[0]=0;
GetWindowText(lpdis->hwndItem,tmp,TAILLE_TMP);
//taille du texte
GetTextExtentPoint32(lpdis->hDC,tmp, strlen(tmp), &dims);
//couleur du texte
SetTextColor(lpdis->hDC, GetSysColor(COLOR_BTNTEXT));
//on demande combien a d'item le treeview associé au bouton
// si sup a 0 on met le bouton en couleur sinon en gris
//couleur du bouton
if (ListView_GetItemCount(ListViewTbl[Wparam-1022])) // 1022 num de séquence init du 1er bouton (1022 = bt 0)
SetBkColor(lpdis->hDC, RGB(255,153,0));//orange
else
SetBkColor(lpdis->hDC, GetSysColor(COLOR_BTNFACE));//gris
//Déterminer l'état du bouton:
etat=lpdis->itemState & ODS_SELECTED;
//Ecrire le texte sur le bouton:
ExtTextOut(lpdis->hDC,(lpdis->rcItem.right-lpdis->rcItem.left-dims.cx)/2+etat, (lpdis->rcItem.bottom-lpdis->rcItem.top-dims.cy)/2+etat, ETO_OPAQUE | ETO_CLIPPED, &lpdis->rcItem,tmp, strlen(tmp), NULL);
//Dessiner le cadre du bouton selon son état:
DrawEdge(lpdis->hDC, &lpdis->rcItem,(etat ? EDGE_SUNKEN : EDGE_RAISED ), BF_RECT|BF_FLAT | BF_SOFT);
return TRUE;