Этапы рисования, стадии рисования и уведомляющие сообщения


Подобно всем приложениям Microsoft Windows, стандартные органы управления периодически рисуют и стирают себя, основываясь на сообщениях, полученных от системы или других приложений. Процесс самого рисования или стирания органа управления называют этапом рисования (paint cycle). Органы управления, которые поддерживают специальное рисование, отправляет уведомляющие сообщения NM_CUSTOMDRAW периодически в ходе каждого  этапа рисования. Это уведомляющее сообщение сопровождается структурой NMCUSTOMDRAW или другой структурой, которая содержит в себе структуру NMCUSTOMDRAW как ее первый член.

Первая часть информации, которую  содержит структура NMCUSTOMDRAW, - это текущая стадия этапа рисования. Она передается как стадия рисования (draw stage) и представляется значением в члене dwDrawStage структуры. Орган управления информирует своего родителя о четырех основных стадиях рисования. Эти основные, или глобальные, стадии рисования представляются в структуре нижеследующими значениями флажков (определенный в файле Commctrl.h).

Глобальные значения стадии рисования Описание
CDDS_PREPAINT Перед началом этапа рисования.
CDDS_POSTPAINT После того, как этап рисования завершается полностью.
CDDS_PREERASE Перед началом цикла стирания.
CDDS_POSTERASE После того, как цикл стирания завершается полностью.

Каждое из предшествующих значений может комбинироваться с флажком CDDS_ITEM, чтобы определить, что рисование организуется для заданных для элементов. Для удобства, файл Commctrl.h содержит  нижеследующие специфические для элементов значения.

Специфические для элемента значения стадии рисования Описание
CDDS_ITEMPREPAINT Прежде, чем элемент будет нарисован.
CDDS_ITEMPOSTPAINT После того, как элемент был нарисован.
CDDS_ITEMPREERASE Прежде, чем элемент будет стерт.
CDDS_ITEMPOSTERASE После того, как элемент был стерт.
CDDS_SUBITEM Оболочка и стандартные органы управления  версии 4.71. Флажок объединяется с флажком CDDS_ITEMPREPAINT или CDDS_ITEMPOSTPAINT, если подэлемент рисуется. Эта комбинация должна быть установлена только тогда, если CDRF_NOTIFYITEMDRAW возвращает значение из CDDS_PREPAINT.

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

 

Назад в оглавление
На главную страницу

Hosted by uCoz