const float* pData,
const Brush* pBrushes,
unsigned int iNumOfPies);
// Функция вызывается автоматически, когда программа запускается
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, PSTR szCmdLine, int iCmdShow)
{
HWND hWnd;
MSG msg;
WNDCLASSEX wndclass;
// Настройка класса окна
wndclass.cbSize = sizeof(WNDCLASSEX);
wndclass.style = CS_HREDRAW | CS_VREDRAW;
wndclass.lpfnWndProc = WndProc;
wndclass.cbClsExtra = 0;
wndclass.cbWndExtra = 0;
wndclass.hInstance = hInstance;
wndclass.hIcon = LoadIcon(NULL, IDI_APPLICATION);
wndclass.hCursor = LoadCursor(NULL, IDC_ARROW);
wndclass.hbrBackground = (HBRUSH)GetStockObject(WHITE_BRUSH);
wndclass.lpszMenuName = NULL;
wndclass.lpszClassName = “Window Class”; // Имя класса
wndclass.hIconSm = LoadIcon(NULL, IDI_APPLICATION);
// Регистрация класса окна
if(RegisterClassEx(&wndclass) == 0)
{
// Сбой программы, выход
return 0;
}
// Создание окна
hWnd = CreateWindowEx(
WS_EX_OVERLAPPEDWINDOW,
«Window Class», // Имя класса
«Построение круговой диаграммы», // Текст заголовка
WS_OVERLAPPEDWINDOW,
CW_USEDEFAULT,
CW_USEDEFAULT,
700,
580,
NULL,
NULL,
hInstance,
NULL);
// Отображение окна
ShowWindow(hWnd, iCmdShow);
// Обработка сообщений, пока программа не будет прервана
while(GetMessage(&msg, NULL, 0, 0))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
return (int)msg.wParam;
}
// Функция обратного вызова для обработки сообщений
LRESULT CALLBACK WndProc(HWND hWnd, UINT iMsg, WPARAM wParam, LPARAM lParam)
{
HDC hDC;
PAINTSTRUCT ps;
unsigned int I;
switch(iMsg)
{
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);
}
break;
// Вызывается, когда окно обновляется
case WM_PAINT:
hDC = BeginPaint(hWnd, &ps);
ShadyDiagram(hDC, 320, 260, 200, 10, g_data, g_pBrushes, g_iNumOfPies);
EndPaint(hWnd, &ps);
break;
// Вызывается, когда пользователь закрывает окно
case WM_DESTROY: