Como usted ha descubierto, ::LoadBitmap
(y el más nuevo ::LoadImage
) sólo se ocupan de .bmp
s. Con mucho, la solución más fácil es convertir su imagen a .bmp
.
Si la imagen tiene transparencia, se puede convertir en un mapa de bits ARGB de 32 bits (aquí hay una herramienta llamada AlphaConv que puede convertirla). A continuación, cargue la imagen con el método CImage
clase LoadFromResource
. Pase el CImage
al m_staticLogo.SetBitmap()
.
Pero si realmente necesita que sea un .png
, se puede hacer.
Método 1 (la forma más fácil): Cargar el .png
de un archivo usando CImage::Load
. Pase el CImage
al m_staticLogo.SetBitmap()
.
Método 2 (la forma más dura): Cargar el .png
de un recurso mediante la carga del recurso en un COM IStream
y usando CImage::Load
. (NOTA: CImage::LoadFromResource
parece tentador, pero no funciona con un gráfico .png
). Para obtener el recurso en un COM IStream
, vea this Codeproject article. Tenga en cuenta que el artículo funciona con Gdiplus::Bitmap
, pero la parte clave es cómo crear el IStream
, que debe poder adaptar para CImage
. Finalmente, pase el CImage
al m_staticLogo.SetBitmap()
.
Editar: Actualizado para usar CImage
, que es más fácil que Gdiplus::Bitmap
.
Duplicado de http://stackoverflow.com/questions/3005685/ – ulatekh