一个 OLE_COLOR 和一个 COLORREF 之间的主要差异是如果一个 OLE_COLOR 中有其高序位设置低序位字节被视为系统颜色索引。
当检测到这种情况时,OleTranslateColor(),COleControl::TranslateColor() 调用该函数将一个 COLORREF 转换为系统颜色索引。
下面的代码阐释一个 OLE_COLOR 和一个 COLORREF 之间的转换:
void CMyOleControl::ConversionTest()
{
OLE_COLOR ocBack = GetBackColor();
// Convert OLE_COLOR to COLORREF
COLORREF clrBack = TranslateColor(ocBack);
// Convert COLORREF to OLE_COLOR
OLE_COLOR ocConverted = (OLE_COLOR)clrBack;
}