Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Programmirovanie_elektronnykh_ustroystv.doc
Скачиваний:
53
Добавлен:
28.05.2015
Размер:
1.44 Mб
Скачать

Int fnStyle;

COLORREF clrref;

};

unsigned int g_iNumOfPies;

Brush* g_pBrushes;

// Прототип функции обратного вызова для обработки сообщений

LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);

void Diagram(HDC hDC,

int x,

int y,

int r,

bool fShadow,

const float* pData,

const Brush* pBrushes,

unsigned int iNumOfPies);

void DiagramPie(HDC hDC,

int x,

int y,

int r,

float s,

float e,

int fnStyle,

COLORREF clrref,

const char* szLabel);

void ShadyDiagram(HDC hDC,

int x,

int y,

int r,

int iShadowDepth,

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:

If (g_pBrushes)

delete[] g_pBrushes;

PostQuitMessage(0);

break;

default:

return DefWindowProc(hWnd, iMsg, wParam, lParam);

}

return 0;

}

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]