在DXSDK的例子中有段关于颜色键的代码不是很明白
DWORD DDColorMatch( LPDIRECTDRAWSURFACE7 pdds, COLORREF dwGDIColor )
{
    if( pdds == NULL )
    return 0x00000000;    COLORREF       rgbT;
    HDC            hdc;
    DWORD          dw = CLR_INVALID;
    DDSURFACEDESC2 ddsd;
    HRESULT        hr;    //  Use GDI SetPixel to color match for us
    if( dwGDIColor != CLR_INVALID && pdds->GetDC(&hdc) == DD_OK)
    {
        rgbT = GetPixel(hdc, 0, 0);     // Save current pixel value
        SetPixel(hdc, 0, 0, dwGDIColor);       // Set our value
        pdds->ReleaseDC(hdc);
    }    // Now lock the surface so we can read back the converted color
    ddsd.dwSize = sizeof(ddsd);
    hr = pdds->Lock( NULL, &ddsd, DDLOCK_WAIT, NULL );
    if( hr == DD_OK)
    {
        dw = *(DWORD *) ddsd.lpSurface; 
        if( ddsd.ddpfPixelFormat.dwRGBBitCount < 32 ) // Mask it to bpp
            dw &= ( 1 << ddsd.ddpfPixelFormat.dwRGBBitCount ) - 1;  
        pdds->Unlock(NULL);
    }    //  Now put the color that was there back.
    if( dwGDIColor != CLR_INVALID && pdds->GetDC(&hdc) == DD_OK )
    {
        SetPixel( hdc, 0, 0, rgbT );
        pdds->ReleaseDC(hdc);
    }
    
    return dw;
}在
SetPixel(hdc, 0, 0, dwGDIColor); 
处设置了颜色索引值,然后在
dw = *(DWORD *) ddsd.lpSurface;
dw和dwGDIColor为什么不一样?
是怎么转变的?颜色键不是设置成自己图片的底色吗?
为什么我见有的例子中把COLORREF设置成CLR_INVALID,然后图片底色随便都可以