相对于DirectX 6.0,接口并没有改变,所以你不需要使用QueryInterface()或者别的来查询接口。
这里使用IDirectDraw7::CreatePalette()的原型,作用是创建调色板对象。
HRESULT CreatePalette(
控制调色板的不同属性control flags
DWORD dwFlags,
/palette data or NULL 指向初始调色板的指针
LPPALETTEENTRY lpColorTable,
实际存储IDirectDrawPalette接口的指针 recived palette interface
LPDIRECTDRAWPALETTE FAR* lplpDDPalette,
advanced , make NULL
IUnknown FAR *pUnkOuter
);
调用成功返回DD_OK;
基本上只需要使用8位调色板,因此控制标记是:DDPCAPS_8BIT | DDPCAPS_ALLOW256 | DDPCAPS_INITIALIZE
LPDIRECTDRAWPALETTE lpddpal = NULL; ///palette interface
if(FAILED(lpdd->CreatePalette(DDPCAPS_8BIT | DDPCAPS_ALLOW256 | DDPCAPS_INITIALIZE , &lpddpal , NULL)))
{
/error
}///end if
********************************************************************************
如果函数调用成功,lpddpal将会返回一个有效的IDirectDrawPalette接口。同时,硬件调色板也会持续的更新为调用中传递的调色板(即palette).
**********************************************************************************
此处即为一个256种随机色彩的集合!!
个人觉得最后两句话很有意味,要多加理解、记忆