Шаг 347 - CWnd::OnMeasureItem

afx_msg void OnMeasureItem( int nIDCtl, LPMEASUREITEMSTRUCT lpMeasureItemStruct );

Параметры
nIDCtl
ID элемента управления.
lpMeasureItemStruct
Указатель на MEASUREITEMSTRUCT структуру данных, которая содержит размерности владельца выводящегося элемент управления.

Замечания
Рамка вызывает эту функцию для владельца выводящейся кнопки, поля со списком, списка, или пункта меню, когда элемент управление создан.
Перегрузите эту функцию и заполните MEASUREITEMSTRUCT структуру данных, указанную в lpMeasureItemStruct, это сообщает Windows относительно размерностей элемента управления и позволяет Windows обрабатывать взаимодействие пользователя с элементом управлением правильно.
Если список или поле со списком создан с LBS_OWNERDRAWVARIABLE или CBS_OWNERDRAWVARIABLE стилем, рамка вызывает эту функцию для владельца для каждого элемента в управлении, иначе эта функция вызвана один раз.
Windows инициализирует обращение к OnMeasureItem для владельца полей со списком и списков, созданных с OWNERDRAWFIXED стилем перед посылкой WM_INITDIALOG сообщения. В результате, когда владелец получает это обращение, Windows еще не определил высоту и ширину шрифта, используемого в элементе управления, обращения к функции и вычисления, которые требуют этих значений, должны произойти в основной функции прикладной программы или библиотеки.
Если измеряемый элемент - CMenu,CListBox или CComboBox, то MeasureItem виртуальная функция соответствующего класса вызвана. Перегрузите MeasureItem функцию членства класса соответствующего элемента управления, чтобы вычислять и установить размер каждого элемента.
OnMeasureItem будет вызван только, если класс элемента управления создан во время выполнения, или он создано с LBS_OWNERDRAWVARIABLE или CBS_OWNERDRAWVARIABLE стилем. Если элемент управления создан редактором диалога OnMeasureItem не будет вызван. Это потому что WM_MEASUREITEM сообщение послано рано в процессе создания управления. Если Вы подклассифицируете, используя DDX_CONTROL, SubclassDlgItem, или SubclassWindow, подклассификация обычно происходит после процесса создания. Следовательно, не имеется никакого способа обработать WM_MEASUREITEM сообщение в функции OnChildNotify элемента управления, которая является механизмом MFC использования, чтобы выполнить ON_WM_MEASUREITEM_REFLECT.

Эта функция вызвана рамкой, чтобы позволить Вашей прикладной программе обрабатывать сообщение Windows. Параметры, переданные к вашей функции отражают параметры, полученные рамкой, когда сообщение было получено. Если Вы вызываете реализацию базового класса этой функции, та реализация использует параметры, первоначально переданные с сообщением, а не параметры, которые Вы обеспечиваете функции.


Предыдущий Шаг | Следующий Шаг | Оглавление
Автор Каев Артем - 07.01.2002