声明:转载此文档时请注意转载来源和我的名字,本人水平有限翻译有误处请指出
MEASUREITEMSTRUCT
MEASUREITEMSTRUCT结构体通知系统自绘控件或菜单项的尺寸.这充许系统正确的处理用户与控件的相互动作
typedef struct tagMEASUREITEMSTRUCT { // mis
UINT CtlType; // 控件类型
UINT CtlID; // combo box, list box, or button 标识符
UINT itemID; // menu item, variable-height list box, 菜单项,可变高的列表框
// or combo box identifier 或组合框的标识符
UINT itemWidth; // width of menu item, in pixels 菜单项的宽,单位:象素
UINT itemHeight; // height of single item in list box menu,
// in pixels 菜单或列表框单一项目的高,单位象素
DWORD itemData; // application-defined 32-bit value 应用程序定义的32位值
} MEASUREITEMSTRUCT;
成员
CtlType
指定控件的类型.这个成员可以是下列的一个值:
ODT_BUTTON 自绘按钮
ODT_COMBOBOX 自绘组合框
ODT_LISTBOX 自绘列表框
ODT_LISTVIEW 自绘列表视图控件
ODT_MENU 自绘菜单
CtlID
指定组合框(combo box), 列表框(list box), 或 控钮(button)的标识符.这个成员不能在菜单中使用
itemID
指定菜单项的标识符或组合框(combo box), 列表框(list box)的位置索引.
列表框(list box)风格已经有LBS_OWNERDRAWVARIABLE时这个值才被指定
组合框(combo box)风格已经有CBS_OWNERDRAWVARIABLE风格时这个值才被指定
itemWidth
指定宽,单位象素,一个菜单项目.在从消息返回之前,自绘菜单项的所有者必需填充这个成员.
itemHeight
指定高,单位象素,列表框(list box)一个个别的项或一个菜单.在从消息返回之前
自绘组合框,列表框或菜单项必需填写这个参数.
itemData
指定与应用程序定义的菜单项相关联的32位值.做为控件,这个参数指定值是最后指定给列表框(list box)或组合框(combo box)
的LB_SETITEMDATA或CB_SETITEMDATA消息中的值.如果列表框(list box)或组合框(combo box)
已经使用LB_HASSTRINGS或CB_HASSTRINGS风格这个最初值是零.否则,这个值最初的值是传给列表框(list box)或组合框(combo box)
下列消息中lparam参数的一个值:
CB_ADDSTRING
CB_INSERTSTRING
LB_ADDSTRING
LB_INSERTSTRING
备注:
所有者窗体接收一个自绘控件的WM_MEASUREITEM消息lParam参数指向的MEASUREITEMSTRUCT结构体的指针.
就在控件被创建的时候自绘控件发送这个消息到它的所有者窗体.所有者然后为控件和返回的结构体填写适当成员.
这个结构体是共同的所有自绘控件
如果应用程序没有填充MEASUREITEMSTRUCT适当的成员.这个控件或菜单不可能被完全的绘制