You can define individual items of a header control to be owner-drawn items. Using this technique gives you more control than you would otherwise have over the appearance of a header item.
You can use the HDM_INSERTITEM message to insert a new owner-drawn item into a header control or the HDM_SETITEM message to change an existing item to an owner-drawn item. Both messages include the address of an HD_ITEM structure, which should have the fmt member set to the HDF_OWNERDRAW value.
When a header control must draw an owner-drawn item, it sends the WM_DRAWITEM message to the parent window. The wParam parameter of the message is the child window identifier of the header control, and the lParam parameter is a pointer to a DRAWITEMSTRUCT structure. The parent window uses the information in the structure to draw the item. For an owner-drawn item in a header control, the DRAWITEMSTRUCT structure contains the following information.
Member | Description |
CtlType | ODT_HEADER owner-drawn control type. |
CtlID | Child-window identifier of the header control. |
itemID | Index of the item to be drawn. |
itemAction | ODA_DRAWENTIRE drawing-action flag. |
itemState | ODS_SELECTED drawing-action flag if the cursor is on the item and the mouse button is down. Otherwise, this member is zero. |
hwndItem | Handle of the header control. |
hDC | Handle of the device context of the header control. |
rcItem | Coordinates of the header item to be drawn. The coordinates are relative to the upper left corner of the header control. |
itemData | Application-defined 32-bit value associated with the item. |