Compartir a través de


CWnd::OnMeasureItem

El marco de trabajo llama a esta función miembro por el marco para el propietario de un botón de dibujo propietario, un cuadro combinado, un cuadro de lista, o un elemento de menú cuando se crea el control.

afx_msg void OnMeasureItem(
   int nIDCtl,
   LPMEASUREITEMSTRUCT lpMeasureItemStruct 
);

Parámetros

  • nIDCtl
    Id. del control.

  • lpMeasureItemStruct
    Señala una estructura de datos de MEASUREITEMSTRUCT que contiene las dimensiones del control de dibujo propietario.

Comentarios

Invalide esta función miembro y rellenar la estructura de datos de MEASUREITEMSTRUCT designada por a lpMeasureItemStruct y retorno; esto indica a Windows las dimensiones del control y permite que Windows procesa la interacción del usuario con el control correctamente.

Si un cuadro de lista o un cuadro combinado se crea con el estilo de LBS_OWNERDRAWVARIABLE o de CBS_OWNERDRAWVARIABLE , el marco de trabajo llama a esta función para el propietario para cada elemento del control; si no esta función se denomina una vez.

Windows inicia la llamada a OnMeasureItem para el propietario de los cuadros combinados y los cuadros de lista creados con el estilo de OWNERDRAWFIXED antes de enviar el mensaje de WM_INITDIALOG .Como resultado, cuando el propietario recibe esta llamada, Windows aún no ha determinado el alto y el ancho de la fuente utilizada en el control; las llamadas de función y los cálculos que requieren estos valores deben aparecer en la función principal de la aplicación o de la biblioteca.

Si el elemento que es medido es CMenu, CListBox u objeto de CComboBox , la función virtual de MeasureItem de la clase correspondiente se denomina.Reemplace la función miembro de MeasureItem de la clase de control adecuado para calcular y establecer el tamaño de cada elemento.

OnMeasureItem solo se llamará si la clase del control se crea en tiempo de ejecución, o se crea con el estilo de LBS_OWNERDRAWVARIABLE o de CBS_OWNERDRAWVARIABLE .Si el control es creado por el editor de cuadros de diálogo, OnMeasureItem no se denominará.Esto es porque el mensaje de WM_MEASUREITEM se envía al principio del proceso de creación de controles.Si crea subclases mediante DDX_Control, SubclassDlgItem, o SubclassWindow, crear subclases se produce normalmente después de que el proceso de creación.Por consiguiente, no hay manera de controlar el mensaje de WM_MEASUREITEM en función de OnChildNotify de control, que es el mecanismo utiliza MFC para implementar ON_WM_MEASUREITEM_REFLECT.

[!NOTA]

Esta función miembro llaman el marco para que la aplicación pueda controlar un mensaje de Windows.Los parámetros pasados a la función reflejan los parámetros recibidos por el marco cuando el mensaje se recibió.Si llama a la implementación de la clase base de esta función, esa implementación utilizará los parámetros pasados originalmente con el mensaje y no los parámetros que se proporciona a la función.

Requisitos

encabezado: afxwin.h

Vea también

Referencia

Clase de CWnd

Gráfico de jerarquía

CMenu::MeasureItem

CListBox::MeasureItem

CComboBox::MeasureItem

CComboBox::MeasureItem