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