Здрасьте. Делаю курсовую на c++. Нужно Разработать программу для построения изображения фигуры, приведенной на рисунке. Исходные данные (x1, y1,R1, R2) должны быть считаны из выбранного пользователем файла. Осуществлять проверку исходных данных на соответствие варианту. Кто нибудь может помочь мне?
if (!RegisterClass (&wndclass))
{
MessageBox (NULL, TEXT ("This program requires Windows NT!"),
szAppName, MB_ICnoonerror) ;
return 0 ;
}
// Handle - это уникальный идентификатор (указатель), который представляет собой
// целое 32-х битное число. Он позволяет обращаться к чему-либо в системе не по имени, а
//по соответствующему уникальному идентификатору.
// создаем окно и получеам хэндл этого окна
hwnd = CreateWindow (
szAppName, // название класса окна
TEXT ("Marov S. Kursovaya rabota"), // заголовок
WS_OVERLAPPEDWINDOW, // стиль окна
CW_USEDEFAULT, // позиция х
CW_USEDEFAULT, // позиция y
CW_USEDEFAULT, // размер по х
CW_USEDEFAULT, // размер по y
NULL,
NULL ,
hInstance, // handle экземпляра класса
NULL) ;
ShowWindow (hwnd, iCmdShow) ; // отображает наше окно на экране
UpdateWindow (hwnd) ;
while (GetMessage (&msg, NULL, 0, 0))
{
TranslateMessage (&msg) ;
DispatchMessage (&msg) ;
}
return msg.wParam ;
}
// определние функция обработчика сообщений с нашего окна
LRESULT CALLBACK WndProc (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
{
HDC hdc ;
PAINTSTRUCT ps ;
RECT rect ;
ifstream in;
in.open("Координаты.txt"); // открываем поток для чтения из файла
int j=0;
while (j>x1; // считываем с файла координату x1
break;
case 2:
in>>y1; // считываем с файла координату y1
break;
case 3:
in>>R1; // считываем с файла радиус основного круга
break;
case 4:
in>>R2; // считываем с файла радиус боковых кругов
break;
}
}
in.close(); // закрываем поток
switch (message)
{
case WM_PAINT:
hdc = BeginPaint (hwnd, &ps) ; // получаем хендл на контекст устройства
GetClientRect (hwnd, &rect) ; // получаем прямоугольную клиентскую область rect
HPEN pen, pen1; // объявляется ручка (ручка применяется для изменения толщины и цвета окантовки)
HBRUSH brush;
pen = CreatePen(PS_DASH, 2, RGB(0, 0, 0));// создается ручка
pen1 = CreatePen(PS_DASH, 2, RGB(200, 0, 0));
brush=CreateSolidBrush (RGB(200,0,0));
SelectObject(hdc, pen); // применение ручки
xLeL1=x1-R1;
xReL1=x1+R1;
yTeL1=y1-R1;
yBeL1=y1+R1;
Ellipse (hdc, xLeL1, yTeL1, xReL1, yBeL1); // здесь рисуется основной круг
mR=R2/10;
X=x1+R1-mR;
Y1=y1-R2/2;
Y2=y1+R2/2;
xLeL2=X-R2;
xReL2=X+R2;
yTeL2=Y1-R2;
yBeL2=Y1+R2;
Ellipse (hdc, xLeL2, yTeL2, xReL2, yBeL2); // здесь рисуется первый боковой круг
xLeL3=X-R2;
xReL3=X+R2;
yTeL3=Y2-R2;
yBeL3=Y2+R2;
Ellipse (hdc, xLeL3, yTeL3, xReL3, yBeL3); // здесь рисуется второй боковой круг
DeleteObject(pen); // уничтожение ручки
SelectObject(hdc, pen1);
SelectObject(hdc, brush);
x=x1;
y=y1;
Ellipse (hdc, x-3, y-3, x+3, y+3);// точка в центре основного круга
x=X;
y=Y1;
Ellipse (hdc, x-3, y-3, x+3, y+3);// точка в центре первого бокового круга
x=X;
y=Y2;
Ellipse (hdc, x-3, y-3, x+3, y+3); // точка в центре второго бокового круга