MEASUREITEMSTRUCT结构向Windows通知所有者绘制的控件或菜单??项的尺寸。这允许Windows正确处理与控件的用户交互。
typedef struct tagMEASUREITEMSTRUCT { //这
UINT CtlType; //控件类型
UINT CtlID; //组合框,列表框或按钮标识符
UINT itemID; //菜单项,变量高度列表框或组合框标识符
UINT itemWidth; //菜单项的宽度,以像素为单位
UINT itemHeight; //列表框菜单中单项的高度,以像素为单位
DWORD itemData; //应用程序定义的32位值
} MEASUREITEMSTRUCT;
会员
CtlType
指定控件类型。该成员可以是以下值之一:
值 | 含义 |
ODT_BUTTON | 所有者按钮 |
ODT_COMBOBOX | 所有者组合框 |
ODT_LISTBOX | 所有者列表框 |
ODT_LISTVIEW | 所有者绘制列表视图控件 |
ODT_MENU | 所有者菜单 |
CtlID
指定组合框,列表框或按钮的标识符。该成员不用于菜单。
itemID
指定菜单项的标识符或列表框或组合框项的位置。仅当该列表具有LBS_OWNERDRAWVARIABLE样式时才为列表框指定该值;该值仅在组合框具有CBS_OWNERDRAWVARIABLE样式时指定。
itemWidth
指定菜单项的宽度(以像素为单位)。在从邮件返回之前,所有者绘制的菜单项的所有者必须填写此成员。
itemHeight
指定列表框或菜单中单个项目的高度(以像素为单位)。在从邮件返回之前,所有者绘制的组合框,列表框或菜单项的所有者必须填写此成员。
的ItemData
指定与菜单项相关联的应用程序定义的32位值。对于控件,该成员通过LB_SETITEMDATA或CB_SETITEMDATA消息指定最后分配给列表框或组合框的值。如果列表框或组合框具有LB_HASSTRINGS或CB_HASSTRINGS样式,则该值最初为零。否则,此值最初是传递给以下消息之一的【lParam的】参数中的列表框或组合框的值:
CB_ADDSTRING
CB_INSERTSTRING
LB_ADDSTRING
LB_INSERTSTRING
备注
所有者绘制控件的所有者窗口接收到一个指向MEASUREITEMSTRUCT结构的指针作为WM_MEASUREITEM消息的【lParam的】参数。所创建的控件在创建控件时将此消息发送到其所有者窗口。所有者然后在结构中填写相应的成员以进行控制和返回。这种结构对于所有所有者绘制的控件是常见的。
如果应用程序没有填写MEASUREITEMSTRUCT的相应成员,则可能无法正确绘制控件或菜单??项。
也可以看看
CB_ADDSTRING, CB_INSERTSTRING, CB_SETITEMDATA, LB_ADDSTRING, LB_INSERTSTRING, LB_SETITEMDATA, WM_MEASUREITEM