Bon, dans la classe CMeterIcon, on dessine l'icone, avec des HDC et autres contextes.
HICON CMeterIcon::CreateMeterIcon(int *pBarData)
// the returned icon must be cleaned up using DestroyIcon()
{// begin CreateMeterIcon
ICONINFO iiNewIcon;
HICON hNewIcon;
HICON hTmpIcon;
iiNewIcon.fIcon = true;
// create DC's
HDC hScreenDC = ::GetDC(NULL);
HDC hIconDC = CreateCompatibleDC(hScreenDC);
HDC hMaskDC = CreateCompatibleDC(hScreenDC);
hTmpIcon = m_hFrame;
if(!GetIconInfo(hTmpIcon,&iiNewIcon))
{
return NULL;
}
if(!::ReleaseDC(NULL,hScreenDC)) // release this ASAP
{// begin DC not released
return NULL;
}// end DC not released
HGDIOBJ hOldIconDC = ::SelectObject(hIconDC,iiNewIcon.hbmColor);
HGDIOBJ hOldMaskDC = ::SelectObject(hMaskDC,iiNewIcon.hbmMask);
// draw the meters
for(int i = 0;i < m_nNumBars;i++)
if(DrawIconMeter(hIconDC,hMaskDC,pBarData[i],i) == false)
return NULL;
// create icon
::SelectObject(hIconDC,hOldIconDC);
::SelectObject(hMaskDC,hOldMaskDC);
hNewIcon = CreateIconIndirect(&iiNewIcon);
// cleanup
DestroyIcon(hTmpIcon);
DeleteObject(iiNewIcon.hbmColor);
DeleteObject(iiNewIcon.hbmMask);
DeleteDC(hMaskDC);
DeleteDC(hIconDC);
return hNewIcon;
}// end CreateMeterIcon
Peut-etre est-ce le HDC qui n'est plus le bon après changement de session ? (pourtant, je reviens sur le même compte pour le moment)...
Une idée ? Merci.
Joccy
