Bonjour,
J'ai une listbox sur une application skinée avec un bmp.
Cette dernière est transparente mais lorsque je clique sur un élément de la liste, la barre de selection ne s'efface pas. J'ai remarqué que lorsque je fais invalidateRect() + UpdateWindow(), ca réglait le problème, sauf que je vois le bmp se redessiner.
En fait, ça fait suite à mon précédent post concernant une static transparente. Donc j'ai éssayé d'appliquer la même méthode que m'avait donnée racpp, sauf que là, j'ai le bmp qui passe devant les items de la listbox :-)
(ce qui pourrait être génant pour l'utilisateur

)
Quelle est alors la bonne méthodeà utiliser ?
Voici un bout de code :
Lors d'un click dans la liste, je récupère juste le texte de l'item, c'est là que je faisait le InvalidateRect et UpdateWindow:
_filenameplay est une variable membre.
case IDL_CLIPLIST:
if(HIWORD (wParam) == LBN_SELCHANGE)
{
//InvalidateRect(m_hWnd, 0, 0);
//UpdateWindow(m_hWnd);
if(_filenameplay != NULL) delete[] _filenameplay;
int iIndex = SendMessage (m_hClipListbox, LB_GETCURSEL, 0, 0);
int iLength = SendMessage (m_hClipListbox, LB_GETTEXTLEN, iIndex, 0) + 1 ;
_filenameplay = new char[iLength];
SendMessage (m_hClipListbox, LB_GETTEXT, iIndex, (LPARAM) _filenameplay);
}
C'est là que je précise que je veux une listbox transparente :
case WM_CTLCOLORLISTBOX:
if ((HWND)lParam==m_hClipListbox)
{
SetTextColor((HDC)wParam,RGB(255,255,255));
SetBkColor((HDC)wParam,TRANSPARENT);
return (INT_PTR)GetStockObject(NULL_BRUSH);
}
break;
Quand je lance l'appli, l'affichage initial est impécable, mais si je click sur un item, les surlignages de sélection ne s'éffacent pas.
Plus fun encore, si j'ai suffisament d'éléments dans ma liste pour avoir une scroll bar dedans, dès que je scroll, le fond des items de la liste passent en noir sur toute la ligne au lieu d'uniquement sous leur textes.
J'espere avoir été un minimum clair,
Merci par avance pour vos réponses.