Converting Between OLE_COLOR and COLORREF Types

Article translations Article translations
Article ID: 131101
Expand all | Collapse all


This article shows by example how to use the COleControl::TranslateColor() method can be used to convert an OLE_COLOR value into a COLORREF value by using the cast operator.

More information

The main difference between an OLE_COLOR and a COLORREF is that if an OLE_COLOR has its high-order bit set, the low-order byte is treated as a system color index. The function OleTranslateColor(), which is called by COleControl::TranslateColor(), translates the system color index into a COLORREF when this condition is detected. The following code illustrates conversion between an OLE_COLOR and a 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;


For a complete list of the translations performed by OleTranslateColor(), or for more information about the OLE_COLOR type, please see the "Microsoft OLE Control Developer's Kit User's Guide and Reference," Appendix D: OLE Controls Architecture, under the heading "Standard Color Type."


Article ID: 131101 - Last Review: June 22, 2014 - Revision: 4.0
Retired KB Content Disclaimer
This article was written about products for which Microsoft no longer offers support. Therefore, this article is offered "as is" and will no longer be updated.

Give Feedback


Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from