CWnd::OnMeasureItem

Il framework chiama la funzione membro dal framework per il proprietario di un pulsante del disegno personalizzato, una casella combinata, una casella di riepilogo, o di una voce di menu quando il controllo viene creato.

afx_msg void OnMeasureItem(
   int nIDCtl,
   LPMEASUREITEMSTRUCT lpMeasureItemStruct 
);

Parametri

  • nIDCtl
    ID del controllo.

  • lpMeasureItemStruct
    Punta a una struttura di dati MEASUREITEMSTRUCT contenente le dimensioni del controllo del disegno personalizzato.

Note

Eseguire l'override della funzione membro e inserire la struttura dei dati MEASUREITEMSTRUCT indicata da lpMeasureItemStruct e restituisce, rende Windows le dimensioni del controllo e Windows consente all'utente di un processo con il controllo correttamente.

Se una casella di riepilogo o di una casella combinata viene creato con lo stile CBS_OWNERDRAWVARIABLE o LBS_OWNERDRAWVARIABLE, il framework chiama la funzione per il proprietario per ciascun elemento del controllo; in caso contrario questa funzione viene chiamata una volta.

Windows avvia la chiamata a OnMeasureItem per il proprietario caselle combinate e caselle di riepilogo create con lo stile OWNERDRAWFIXED prima di inviare il messaggio WM_INITDIALOG.Pertanto, se il proprietario riceve questa chiamata, Windows non ha ancora determinato l'altezza e la larghezza del carattere utilizzato nel controllo; le chiamate di funzione e i calcoli che richiedono questi valori devono verificarsi nella funzione principale dell'applicazione o della raccolta.

Se l'elemento che viene misurato viene CMenu, CListBox o oggetto CComboBox, la funzione virtuale MeasureItem della classe appropriata viene chiamata.Eseguire l'override della funzione membro MeasureItem della classe appropriata del controllo per calcolare e impostare la dimensione di ciascun elemento.

OnMeasureItem verrà chiamato solo se la classe del controllo viene creata in fase di esecuzione, o viene creata con lo stile CBS_OWNERDRAWVARIABLE o LBS_OWNERDRAWVARIABLE.Se il controllo viene creato dall'editor finestra di dialogo, OnMeasureItem non verrà chiamato.Questo perché il messaggio WM_MEASUREITEM viene inviato inizio del processo di creazione del controllo.Se sottoclasse utilizzando DDX_Control, SubclassDlgItem, o SubclassWindow, la creazione di una sottoclasse in genere si verifica dopo che il processo di creazione.Di conseguenza, non è possibile gestire il messaggio WM_MEASUREITEM nella funzione OnChildNotify del controllo, che si utilizza il meccanismo MFC implementare ON_WM_MEASUREITEM_REFLECT.

[!NOTA]

Questa funzione membro viene chiamata dal framework per consentire l'applicazione per gestire un messaggio di Windows.I parametri passati alla funzione riflettono i parametri ricevuti dal framework quando il messaggio è stato ricevuto.Se si chiama l'implementazione della classe base di questa funzione, tale implementazione dei parametri passati originariamente con il messaggio e non i parametri forniti alla funzione.

Requisiti

Header: afxwin.h

Vedere anche

Riferimenti

Classe CWnd

Grafico della gerarchia

CMenu::MeasureItem

CListBox::MeasureItem

CComboBox::MeasureItem

CComboBox::MeasureItem