{
int fnStyle;
COLORREF clrref;
};
unsigned int g_iNumOfPies;
Brush* g_pBrushes;
где g_data – массив некоторых данных, по которым строится диаграмма;
структура Brush будет использоваться для хранения типов кистей (различные виды штриховки) и их цветов;
g_iNumOfPies – количество значений, по которым строится диаграмма;
g_pBrushes – кисти, массив будет динамически создан при запуске программы и заполнен случайными значениями, разумеется размеры массивов g_data и g_pBrushes одинаковы и равны g_iNumOfPies.
После успешного создания окна массив кистей создается и заполняется:
case WM_CREATE:
g_iNumOfPies = sizeof(g_data) / sizeof(g_data[0]);
g_pBrushes = new Brush[g_iNumOfPies];
srand((unsigned int)time(NULL));
for (I = 0u; I < g_iNumOfPies; ++i)
{
g_pBrushes[i].fnStyle = rand() % 7;
g_pBrushes[i].clrref = RGB(rand() % 0xFF, rand() % 0xFF, rand() % 0xFF);
}
Зачем он нужен? Например, пользователь поменял размер окна, всю диаграмму придется перерисовать и при этом желательно, чтобы, цвета всех сегментов остались такими же какими были. Если программу запустить повторно, диаграмма перекрасится.
Все ресурсы, которые мы запрашиваем в программе, например, оперативную память под массив данных, должны быть освобождены при завершении программы. Это удобно сделать при обработке противоположного WM_CREATE сообщения WM_DESTROY:
case WM_DESTROY: