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