CWnd::OnMeasureItem

在创建该控件时,该结构由所有者绘制按钮,组合框的所有者框架调用该成员函数,列表框和菜单项。

afx_msg void OnMeasureItem( 
   int nIDCtl, 
   LPMEASUREITEMSTRUCT lpMeasureItemStruct  
);

参数

  • nIDCtl
    控件的 ID。

  • lpMeasureItemStruct
    指向包含所有者描述控件的尺寸的 MEASUREITEMSTRUCT 数据结构。

备注

重写该成员函数并填充 MEASUREITEMSTRUCT 数据结构指向由 lpMeasureItemStruct 并返回;会通知Windows控件的尺寸并允许Windows正确处理与控件的交互。

如果列表框或组合框。LBS_OWNERDRAWVARIABLECBS_OWNERDRAWVARIABLE 样式创建,框架调用所有者的此功能在控件的每个项的;否则此函数调用。

Windows启动对组合框的所有者的 OnMeasureItem 并将 OWNERDRAWFIXED 样式创建的列表框在传输 WM_INITDIALOG 信息之前。 结果,那么,当所有者接收此调用时,Windows不确定用于控件的字体的高度和宽度;函数调用,并需要这些值的计算在应用程序或库的主函数应发生。

如果测量的项目是 CMenuCListBoxCComboBox 对象,则相应的选件类的 MeasureItem 虚函数调用。 重写相应控件的选件类的 MeasureItem 成员函数计算和设置每个项的大小。

OnMeasureItem 将调用,仅当控件的选件类在运行时创建,或者使用 LBS_OWNERDRAWVARIABLECBS_OWNERDRAWVARIABLE 样式来创建。 如果控件由对话框编辑器中创建的,OnMeasureItem 不会调用。 这是因为,WM_MEASUREITEM 信息的早期创建发送指示控件。 如果使用 DDX_ControlSubclassDlgItemSubclassWindow,subclassing的子类通常发生,在创建过程完成。 因此,无法处理在控件的 OnChildNotify 功能的 WM_MEASUREITEM 消息,是结构MFC使用实现 ON_WM_MEASUREITEM_REFLECT

备注

此成员函数由框架调用提供您的应用程序处理Windows消息。当接收消息,参数传递给函数以反映结构接收的参数。如果调用此函数的基类实现,该实现将使用参数最初用消息您提供给函数而非参数。

要求

Header: afxwin.h

请参见

参考

CWnd 类

层次结构图

CMenu::MeasureItem

CListBox::MeasureItem

CComboBox::MeasureItem

CComboBox::MeasureItem