WM_MEASUREITEM    
The
WM_MEASUREITEM message is sent to the owner window of an owner-drawn button,
combo box, list box, list view control, or menu item when the control or menu
is created. 
WM_MEASUREITEM 
idCtl = (UINT) wParam;                // control identifier 
lpmis = (LPMEASUREITEMSTRUCT) lParam; // item-size
information 
 
Parameters
idCtl
Value of wParam.
Contains the value of the CtlID member of the MEASUREITEMSTRUCT structure pointed to by
the lpmis parameter. This value identifies the control that sent the
WM_MEASUREITEM message. 
If the value
is zero, the message was sent by a menu. If the value is nonzero, the message
was sent by a combo box or by a list box. If the value is nonzero, and the
value of the itemID member of the MEASUREITEMSTRUCT pointed to by
lpmis is (UINT) -1, the message
was sent by a combo edit field. 
lpmis
Value of lParam.
Points to a MEASUREITEMSTRUCT
structure that contains the dimensions of the owner-drawn control or menu item.
Return Values
If an
application processes this message, it should return TRUE. 
Remarks
When the
owner window receives the WM_MEASUREITEM message, the owner fills in the MEASUREITEMSTRUCT
structure pointed to by the lParam parameter of the message and returns;
this informs Windows of the dimensions of the control. If a list box or combo
box is created with the LBS_OWNERDRAWVARIABLE or CBS_OWNERDRAWVARIABLE style,
this message is sent to the owner for each item in the control; otherwise, this
message is sent once. 
Windows sends
the WM_MEASUREITEM message to the owner window of combo boxes and list boxes
created with the OWNERDRAWFIXED style before sending the WM_INITDIALOG message.
As a result, when the owner receives this message, Windows has not yet
determined the height and width of the font used in the control; function calls
and calculations requiring these values should occur in the main function of
the application or library. 
See Also