wmmail.ru – cервис почтовых рассылок на главную
написать письмо
карта сайта

С чего начать?РекламодательПравилаFAQСтатистикаБиржа статейTOP100ФоткиКонтакты
Логин:
Пароль: 
Регистрация   Забыли пароль?
WMLogin
Пользователей всего:

514736

Пользователей сегодня:

70

Пользователей online:

97

Выплачено ($): 7`610`310,92
Выплат: 8`119`239
Писем прочитано: 1`024`983`950
Новые вопросы

Задать свой вопрос


 
 
Online 4
Все ответы
 
 

Тема #184726

Внимание! В разделе запрещается:

  • Мат (оскорбления)
  • Частично реклама
  • Нарушение законодательства РФ
  • Попрошайничество и просьбы одолжить деньги, кредиты или монеты

Выделите текст и нажмите для цитирования  #  
0   [30.05.2013 09:08] Salir Рейтинг 0.00     Стена пользователя Salir +24

Закрытая тема от пользователя Salir Help! С++, WinApi

Здрасьте. Делаю курсовую на c++. Нужно Разработать программу для построения изображения фигуры, приведенной на рисунке. Исходные данные (x1, y1,R1, R2) должны быть считаны из выбранного пользователем файла. Осуществлять проверку исходных данных на соответствие варианту. Кто нибудь может помочь мне?

Вот скриншот изображения который нужен: http://mepic.ru/view/?id=c1053c515f1e360290559ec9c99df7d3

Исходник:
#include
#include
// прототип функции обработчика сообщений с нашего окна:
LRESULT CALLBACK WndProc (HWND, UINT, WPARAM, LPARAM) ;

// переменные используемые в программе:
double x1, y1, R1, R2;
double X, Y1, Y2, mR;
int xLeL1, xReL1, yTeL1, yBeL1, x , y;
int xLeL2, xReL2, yTeL2, yBeL2;
int xLeL3, xReL3, yTeL3, yBeL3;

// main
int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance,
PSTR szCmdLine, int iCmdShow)
{

static TCHAR szAppName[] = TEXT ("HelloWin") ;
HWND hwnd ;
MSG msg ;
WNDCLASS wndclass ;

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 = szAppName ;

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); // точка в центре второго бокового круга

DeleteObject(pen1);
DeleteObject(brush);
EndPaint (hwnd, &ps) ;
return 0 ;

case WM_DESTROY:
PostQuitMessage (0) ;
return 0 ;
}
return DefWindowProc (hwnd, message, wParam, lParam) ;
}

[реклама]
Раздел: Программирование, последний комментарий: 30.05.2013 09:26
Тема закрыта пользователем Igoresha
Ответы
Ответов всего: 1  тема закрыта 
Выделите текст и нажмите для цитирования  #  
0   [30.05.2013 09:26] #1536862   Все ответы пользователя

:help::lol:

НОВОСТИ
19.04.2024Технические работы с СБП
подробнее>>
03.04.2024Выплаты
подробнее>>

© 2004-2024 «WMMAIL» Пользовательское соглашение