Compartilhar via


CWnd::OnMeasureItem

A estrutura chama essa função de membro estrutura para o proprietário de um botão do proprietário, uma caixa de combinação, uma caixa de listagem, ou de um item de menu quando o controle é criado.

afx_msg void OnMeasureItem(
   int nIDCtl,
   LPMEASUREITEMSTRUCT lpMeasureItemStruct 
);

Parâmetros

  • nIDCtl
    A identificação de O controle.

  • lpMeasureItemStruct
    Aponta para uma estrutura de dados de MEASUREITEMSTRUCT que contém as dimensões do controle do proprietário.

Comentários

Substituir essa função de membro e preenche a estrutura de dados de MEASUREITEMSTRUCT apontada por lpMeasureItemStruct e retornar; isso informa o windows das dimensões do controle e permite que as janelas processem a interação com o controle corretamente.

Se uma caixa de listagem ou uma caixa combo são criadas com o estilo de LBS_OWNERDRAWVARIABLE ou de CBS_OWNERDRAWVARIABLE , a estrutura chama essa função para o proprietário para cada item no controle; se não essa função é chamada uma vez.

As janelas iniciam a chamada a OnMeasureItem para o proprietário das caixas de combinação e caixas de listagem criadas com o estilo de OWNERDRAWFIXED antes de enviar a mensagem de WM_INITDIALOG .Como resultado, quando o proprietário recebe essa chamada, o não determinaram ainda a altura e largura da fonte usada no controle; as chamadas de função e os cálculos que exigem esses valores devem ocorrer na função do aplicativo ou biblioteca.

Se o item que está sendo é medido CMenu, CListBox ou objeto de CComboBox , então a função virtual de MeasureItem da classe apropriada será chamada.Substitua a função de membro de MeasureItem da classe de controle adequado para calcular e definir o tamanho de cada item.

OnMeasureItem será chamado somente se a classe do controle é criada em tempo de execução, ou é criada com o estilo de LBS_OWNERDRAWVARIABLE ou de CBS_OWNERDRAWVARIABLE .Se o controle é criado pelo editor de diálogo, OnMeasureItem não será chamado.Isso ocorre porque a mensagem de WM_MEASUREITEM é enviada no início do processo de criação do controle.Se você subclasse usando DDX_Control, SubclassDlgItem, ou SubclassWindow, subclassing geralmente ocorre após o processo de criação.Portanto, não há nenhuma maneira para manipular a mensagem de WM_MEASUREITEM na função de OnChildNotify do controle, que é o MFC do mecanismo implementar ON_WM_MEASUREITEM_REFLECT.

ObservaçãoObservação

Essa função de membro é chamada pela estrutura para permitir que seu aplicativo manipule uma mensagem do windows.Parâmetros passados à sua função refletem os parâmetros recebidos pela estrutura quando a mensagem foi colocada.Se você chamar a implementação da classe base de essa função, essa implementação usará parâmetros passados originalmente com a mensagem e não os parâmetros que você fornece para a função.

Requisitos

Cabeçalho: afxwin.h

Consulte também

Referência

CWnd Class

Gráfico de hierarquia

CMenu::MeasureItem

CListBox::MeasureItem

CComboBox::MeasureItem

CComboBox::MeasureItem