Подобно всем приложениям 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, а затем возвратить указанное значение, которое информирует орган управления о том, что оно должно сделать. Дополнительную информацию об этих возвращаемых значениях см. в нижеследующих статьях.