CWnd::OnMeasureItem
在创建该控件时,该结构由所有者绘制按钮,组合框的所有者框架调用该成员函数,列表框和菜单项。
afx_msg void OnMeasureItem(
int nIDCtl,
LPMEASUREITEMSTRUCT lpMeasureItemStruct
);
参数
nIDCtl
控件的 ID。lpMeasureItemStruct
指向包含所有者描述控件的尺寸的 MEASUREITEMSTRUCT 数据结构。
备注
重写该成员函数并填充 MEASUREITEMSTRUCT 数据结构指向由 lpMeasureItemStruct 并返回;会通知Windows控件的尺寸并允许Windows正确处理与控件的交互。
如果列表框或组合框。LBS_OWNERDRAWVARIABLE 或 CBS_OWNERDRAWVARIABLE 样式创建,框架调用所有者的此功能在控件的每个项的;否则此函数调用。
Windows启动对组合框的所有者的 OnMeasureItem 并将 OWNERDRAWFIXED 样式创建的列表框在传输 WM_INITDIALOG 信息之前。结果,那么,当所有者接收此调用时,Windows不确定用于控件的字体的高度和宽度;函数调用,并需要这些值的计算在应用程序或库的主函数应发生。
如果测量的项目是 CMenu,CListBox 或 CComboBox 对象,则相应的选件类的 MeasureItem 虚函数调用。重写相应控件的选件类的 MeasureItem 成员函数计算和设置每个项的大小。
OnMeasureItem 将调用,仅当控件的选件类在运行时创建,或者使用 LBS_OWNERDRAWVARIABLE 或 CBS_OWNERDRAWVARIABLE 样式来创建。如果控件由对话框编辑器中创建的,OnMeasureItem 不会调用。这是因为,WM_MEASUREITEM 信息的早期创建发送指示控件。如果使用 DDX_Control、 SubclassDlgItem或 SubclassWindow,subclassing的子类通常发生,在创建过程完成。因此,无法处理在控件的 OnChildNotify 功能的 WM_MEASUREITEM 消息,是结构MFC使用实现 ON_WM_MEASUREITEM_REFLECT。
说明 |
---|
此成员函数由框架调用提供您的应用程序处理Windows消息。当接收消息,参数传递给函数以反映结构接收的参数。如果调用此函数的基类实现,该实现将使用参数最初用消息您提供给函数而非参数。 |
要求
Header: afxwin.h