Freigeben über


CWnd::OnMeasureItem

Das Framework ruft diese Memberfunktion vom Framework für den Besitzer einer Ownerdrawnschaltfläche, des Kombinationsfelds, des Listenfelds oder des Menüelements auf, wenn das Steuerelement erstellt wird.

afx_msg void OnMeasureItem(
   int nIDCtl,
   LPMEASUREITEMSTRUCT lpMeasureItemStruct 
);

Parameter

  • nIDCtl
    Die ID des Steuerelements.

  • lpMeasureItemStruct
    Zeigt auf eine MEASUREITEMSTRUCT Datenstruktur, die die Dimensionen des Ownerdrawnsteuerelements enthält.

Hinweise

Überschreiben Sie diese Memberfunktion und füllen Sie die MEASUREITEMSTRUCT Datenstruktur aus, die von zu lpMeasureItemStruct und wieder angezeigt wird; dieses informiert Windows über die Abmessungen des Steuerelements und ermöglicht Windows zur Prozessbenutzerinteraktion mit dem Steuerelement ordnungsgemäß.

Wenn ein Listen- oder Kombinationsfeld mit dem LBS_OWNERDRAWVARIABLE oder CBS_OWNERDRAWVARIABLE Format erstellt wird, ruft das Framework diese Funktion für den Besitzer jedes Element im Steuerelement auf; andernfalls wird diese Funktion einmal aufgerufen.

Windows initiiert den Aufruf OnMeasureItem für den Besitzer von den Kombinationsfeldern und Listenfelder, die mit dem OWNERDRAWFIXED Format erstellt werden, bevor die WM_INITDIALOG Meldung sendet.Daher wird der Besitzer diesen Aufruf empfängt, mit Windows noch nicht die Höhe und Breite der Schriftarten bestimmt, die im - Steuerelement verwendet wird, Funktionsaufrufe und Berechnungen, die diese Werte benötigen, sollten in der Hauptfunktion der Anwendung oder der Bibliothek auftreten.

Wenn das Element, das gemessen wird, CMenu, CListBox oder CComboBox-Objekt ist, wird die virtuelle Funktion MeasureItem der entsprechenden Klasse aufgerufen.Überschreiben Sie die MeasureItem-Memberfunktion der entsprechenden Klasse des Steuerelements, um die Größe der einzelnen Elemente berechnen und festzulegen.

OnMeasureItem wird aufgerufen, wenn die Klasse des Steuerelements zur Laufzeit erstellt wird oder sie mit dem LBS_OWNERDRAWVARIABLE oder CBS_OWNERDRAWVARIABLE Format erstellt wird.Wenn das Steuerelement im Dialog-Editor erstellt wird, wird OnMeasureItem nicht aufgerufen.Dies liegt daran, dass die WM_MEASUREITEM Meldung früh im Erstellungsprozess des Steuerelements gesendet wird.Wenn Sie unterordnen, indem Sie DDX_Control, SubclassDlgItem oder SubclassWindow verwenden, tritt das Erstellen von Unterklassen von normalerweise nach der Erstellungsprozess auf.Daher gibt es keine Möglichkeit, die WM_MEASUREITEM Meldung in der OnChildNotify-Funktion des Steuerelements zu bearbeiten, die die dem Mechanismus MFC ist, ON_WM_MEASUREITEM_REFLECT zu implementieren.

HinweisHinweis

Diese Memberfunktion wird vom Framework aufgerufen, um die Anwendung zu ermöglichen, eine Windows-Meldung zu bearbeiten.Die Parameter, die an die Funktion übergeben werden, geben die Parameter, die vom Framework empfangen werden, als die Nachricht empfangen wurde.Wenn Sie die Basisklassenimplementierung dieser Funktion aufrufen, verwendet diese Implementierung die Parameter, die mit der Meldung übergeben werden und nicht die Parameter, die an die Funktion bereitstellen.

Anforderungen

Header: afxwin.h

Siehe auch

Referenz

CWnd-Klasse

Hierarchien-Diagramm

CMenu::MeasureItem

CListBox::MeasureItem

CComboBox::MeasureItem

CComboBox::MeasureItem