afx_msg privatevoid OnMeasureItem ( int nIDCtl, LPMEASUREITEMSTRUCT lpMeasureItemStruct );
Parâmetros
nIDCtl
O ID do controle.
lpMeasureItemStruct
Aponta para um estrutura de dados MEASUREITEMSTRUCT que contém as dimensões do Controlarar proprietário-desenhar.
Observações
A estrutura chama esta função de membro pela estrutura para o proprietário de um botão proprietário-desenhar, caixa de combinação, caixa de listagem ou item de menu quando o Controlarar é criado.
Substituir esta função de membro e preencher na estrutura de dados MEASUREITEMSTRUCT apontada pelo lpMeasureItemStruct e retorno; Isso informa ao Windows das dimensões do Controlarar e permite que o Windows Processoar a interação do usuário com o controle corretamente.
Se uma caixa de listagem ou caixa de combinação for criada com o estilo de LBS_OWNERDRAWVARIABLE ou CBS_OWNERDRAWVARIABLE , a estrutura chama essa função para o proprietário de cada item no Controlarar; caso contrário, essa função é chamado uma vez.
Windows inicia a chamada para OnMeasureItem para o proprietário de caixas de combinação e caixas de listagem criadas com o estilo OWNERDRAWFIXED antes de enviar o mensagem WM_INITDIALOG . Como resultado, quando o proprietário recebe essa chamada, Windows não ainda determinou a altura e largura da fonte usada no Controlarar; chamadas de função e cálculos que exigem esses valores devem ocorrer na função principal do aplicativo ou da biblioteca.
Se o item está sendo medido for um CMenu, CListBox ou CComboBox objeto, a função virtual MeasureItem da classe apropriada é chamada. Substituir a função de membro MeasureItem de classe do Controlarar apropriado para calcular e defina o tamanho de cada item.
OnMeasureItem será chamada somente se a classe do Controlarar é criado em tempo de execução, ou ele é criado com o LBS_OWNERDRAWVARIABLE ou CBS_OWNERDRAWVARIABLE estilo. Se o Controlarar é criado pelo editor de diálogo, OnMeasureItem não será chamado. Isto é porque a mensagem WM_MEASUREITEM é enviada no início do processo de criação do Controlarar. Se você subclasse usando DDX_Control, SubclassDlgItemou SubclassWindow, a subclassificação geralmente ocorre após o processo de criação. Portanto, não há nenhuma maneira para manipular a mensagem WM_MEASUREITEM na função OnChildNotify do Controlarar, que é o mecanismo que MFC usa para implementar ON_WM_MEASUREITEM_REFLECT.
&Notanbsp; Esta função de membro é chamada pela estrutura para permitir que seu aplicativo manipular uma mensagem do Windows. Os parâmetros passados para a função refletem os parâmetros recebidos pela estrutura quando a mensagem foi recebida. Se você chamar a implementação da classe base dessa função, essa implementação usará os parâmetros originalmente passados com a mensagem e não os parâmetros que você fornece para a função.
|&Nbsp CWnd visão geral ; Membros de classe | Gráfico de hierarquia
Consulte tambémnbsp;CMenu::MeasureItem, CListBox::MeasureItem, CComboBox::MeasureItem, WM_MEASUREITEM