LoadFromResource uses LoadImage internally, it doesn't support PNG last time I tried, despite what the documentation says. You can link with CxImage (look on codeproject) but it's a lot of work for little real benefit.
What I did in the end was forget about PNG, use AlphaConv to convert PNG's into 32-bit Windows bitmaps and use CImage with those. Additional advantage is that you can use them with CBitmapButton etc. in MFC without any transformations.
Another way to hack around it is to extract the resource contents to a temporary file, then use CImage::Load to read it from there. If I'd catch you doing that in one of my code bases I'd punch you in the face though ;)