Come hai scoperto, ::LoadBitmap
(e il più recente ::LoadImage
) trattare solo con .bmp
s. Di gran lunga la soluzione più semplice è quella di convertire l'immagine in un .bmp
.
Se l'immagine ha trasparenza, può essere convertita in un bitmap ARGB a 32 bit (qui è uno strumento chiamato AlphaConv che può convertirlo). Quindi caricare l'immagine utilizzando il metodo LoadFromResource
della classe CImage
. Passa il numero CImage
a m_staticLogo.SetBitmap()
.
Ma se si veramente è necessario che sia un .png
, è possibile farlo.
Metodo 1 (il modo più semplice): Caricare il .png
da un file utilizzando CImage::Load
. Passa il numero CImage
a m_staticLogo.SetBitmap()
.
Metodo 2 (il senso più duro): Caricare la .png
da una risorsa caricando la risorsa in un COM IStream
e utilizzando CImage::Load
. (NOTA: CImage::LoadFromResource
sembra allettante ma non funzionerà con un grafico .png
). Per ottenere la risorsa in un COM IStream
, vedere this Codeproject article. Nota che l'articolo funziona con Gdiplus::Bitmap
ma la parte chiave è come creare il IStream
, che dovresti essere in grado di adattare per CImage
. Infine, passare il CImage
a m_staticLogo.SetBitmap()
.
Edit: aggiornato per utilizzare CImage
, che è più facile che Gdiplus::Bitmap
.
Duplicato di http://stackoverflow.com/questions/3005685/ – ulatekh