当创建控件或菜单??时,WM_MEASUREITEM消息将发送到所有者按钮,组合框,列表框,列表视图控件或菜单??项的所有者窗口。
WM_MEASUREITEM
idCtl = (UINT) wParam; //控制标识符
lpmis = (LPMEASUREITEMSTRUCT) lParam; //项目大小信息
参数
【idCtl】
价值【wParam中】.包含由【lpmis】参数指向的MEASUREITEMSTRUCT结构的CtlID成员的值。此值标识发送WM_MEASUREITEM消息的控件。
如果值为零,则该消息由菜单发送。如果值不为零,则该消息由组合框或列表框发送。如果值为非零,并且【lpmis】指向的MEASUREITEMSTRUCT itemID的值为(UINT)-1,则该消息由组合编辑字段发送。
【lpmis】
价值【lParam的】.指向MEASUREITEMSTRUCT结构,其中包含所有者绘制的控件或菜单??项的维度。
返回值
如果应用程序处理此消息,它应该返回TRUE。
备注
当所有者窗口收到WM_MEASUREITEM消息时,所有者填写消息的【lParam的】参数指向的MEASUREITEMSTRUCT结构,并返回;这将通知Windows控件的尺寸。如果使用LBS_OWNERDRAWVARIABLE或CBS_OWNERDRAWVARIABLE样式创建列表框或组合框,则该消息将发送给控件中每个项目的所有者;否则,该消息将被发送一次。
在发送WM_INITDIALOG消息之前,Windows将WM_MEASUREITEM消息发送到组合框的所有者窗口和使用OWNERDRAWFIXED样式创建的列表框。因此,当所有者收到此消息时,Windows尚未确定控件中使用的字体的高度和宽度;需要这些值的函数调用和计算应该发生在应用程序或库的主要功能中。
也可以看看