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.

Dica

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 da hierarquia

CMenu::MeasureItem

CListBox::MeasureItem

CComboBox::MeasureItem

CComboBox::MeasureItem