我想创建一个32位的位图。它的背影是透明。但怎样也创建不出来。下面是代码,请问是什以回事?#define IMAGE_WIDTH 800
#define IMAGE_HEIGHT 480
#define WIDTHBYTES(bits) (((bits)+31)/32 * 4)
void GenBmp(BYTE* pvImage)
{
pvImage = (BYTE*)malloc(WIDTHBYTES(32)*IMAGE_WIDTH*IMAGE_HEIGHT);
int i=0;
for(int a=0;a<IMAGE_HEIGHT;a++)
{
for(int b=0;b<IMAGE_WIDTH;b++)
{
pvImage[i]= 0;//b分量
pvImage[i+1]=(0*(255-0)+0*0)/255;//g分量
pvImage[i+2]=(0*(255-0)+0*0)/255;//r分量
pvImage[i+3]=0;//alpha通道置零
i+=4;
} }}
         struct BitMAPINF Obi; 
memset(&bi, 0, sizeof(bi));
bi.bmiHeader.biSize = sizeof(bi.bmiHeader); // size of this struct
bi.bmiHeader.biBitCount = 32;
bi.bmiHeader.biCompression = BI_ALPHABITFIELDS;// rgb = 3 components
bi.bmiHeader.biPlanes = 1;
bi.bmiHeader.biWidth = IMAGE_WIDTH; // width of window
bi.bmiHeader.biHeight = IMAGE_HEIGHT; // height of window
bi.bmiHeader.biSizeImage = WIDTHBYTES(32)*IMAGE_WIDTH*IMAGE_HEIGHT;
//bi.bmiHeader.biClrUsed = 256; //int i;
//for (i=0; i<256; i++)
//{
// bi.bmiColors[i].rgbRed  = 255;
// bi.bmiColors[i].rgbGreen= 0;
// bi.bmiColors[i].rgbBlue = 0;
// bi.bmiColors[i].rgbReserved = 0;
//} BYTE* ptr = NULL;
HBITMAP hBitmap24 = CreateDIBSection(hdc, (BITMAPINFO*)&bi, DIB_RGB_COLORS, (void**)&ptr, 0, 0);
GenBmp(ptr);得到的 hBitmap24 还是黑色的,我想得到的为透明?该怎么办