matriz [byte] para HBITMAP ou CBitmap

Eu tenho uma matriz de bytes (que eu leio através de um fluxo diretamente de um .bmp e, em seguida, armazeno como um BLOB em um banco de dados) que desejo exibir como ícones em um CImageList. Portanto, quero, de alguma forma, carregar meus dados em um HBITMAP ou CBitmap. Eu fiz isso até agora, lendo um arquivo:

hPic = (HBITMAP)LoadImage(NULL, strPath, IMAGE_BITMAP, dwWidth, dwHeight, LR_LOADFROMFILE | LR_VGACOLOR);
...
CBitmap bitmap;
bitmap.Attach(hPicRet);

Mas, obviamente, isso funciona apenas para arquivos, mas não para matrizes de bytes. Como posso obter o mesmo resultado, mas lendo de uma matriz de bytes?

Editar: Observe que minha matriz não contém apenas as informações de cores, mas o arquivo completo conforme está gravado no disco, incluindo todos os cabeçalhos e metadados. Parece-me que descartar toda essa informação é uma má ideia.

questionAnswers(4)

yourAnswerToTheQuestion