Форум программистов, компьютерный форум CyberForum.ru

Вывести в окне фигуры: домик, человечек, солнце - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 9, средняя оценка - 4.78
koka278
3 / 3 / 1
Регистрация: 11.10.2010
Сообщений: 18
12.11.2010, 14:13     Вывести в окне фигуры: домик, человечек, солнце #1
Используя различные фигуры (точка, линия, эллипс, круг, прямоугольник и др.) вывести в окне фигуры: домик, человечек, солнце. Фигуры должны быть заполнены разными цветами и разными кистями (минимум три варианта различной штриховки)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
12.11.2010, 14:13     Вывести в окне фигуры: домик, человечек, солнце
Посмотрите здесь:

C++ Вводить название фигуры, выводить формулу для вычисления площади этой фигуры
Нарисовать тучу, закрывающую солнце. Когда туча наполовину закрывает солнце, начинается дождь C++
Массивы. Вывести на экран объемы каждой фигуры C++
SFML платформер - Анимация работает (человечек бегает), но не удается загрузить карту (пустой экран) C++
Движущийся человечек в консоли C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Mencey
 Аватар для Mencey
145 / 92 / 7
Регистрация: 22.07.2010
Сообщений: 424
12.11.2010, 16:24     Вывести в окне фигуры: домик, человечек, солнце #2
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
#include <windows.h> 
#include <math.h> 
 
#define MoveTo(hdc, x, y) MoveToEx(hdc, x, y, NULL)
 
LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM); 
 
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, 
                    PSTR szCmdLine, int iCmdShow) 
{ 
    static char szAppName[] = "SineWave"; 
    HWND        hwnd; 
    MSG         msg;   
    WNDCLASSEX  wndclass; 
 
    wndclass.cbSize        = sizeof(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; 
    wndclass.hIconSm       = LoadIcon(NULL, IDI_APPLICATION); 
 
    RegisterClassEx(&wndclass); 
 
    hwnd = CreateWindow(szAppName, "Sine Wave Using Polyline", 
                                            WS_OVERLAPPEDWINDOW, 
                                            CW_USEDEFAULT, CW_USEDEFAULT, 
                                            350, 250, 
                                            NULL, NULL, hInstance, 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 iMsg, WPARAM wParam, LPARAM lParam) 
{ 
  static int  cxClient, cyClient; 
  HDC         hdc; 
  PAINTSTRUCT ps; 
 
    switch(iMsg) 
    { 
            case WM_SIZE: 
                cxClient = LOWORD(lParam); 
                cyClient = HIWORD(lParam); 
                return 0; 
 
            case WM_PAINT: 
                hdc = BeginPaint(hwnd, &ps); 
                
                Rectangle(hdc, 100, 100, 200, 200);
                MoveTo(hdc, 100, 100);
                LineTo(hdc, 150, 50);
                LineTo(hdc, 200, 100);
                
                MoveTo(hdc, 0, 0);
                LineTo(hdc, 25, 50);
                MoveTo(hdc, 0, 0);
                LineTo(hdc, 50, 50);
                MoveTo(hdc, 0, 0);
                LineTo(hdc, 50, 25);
                Ellipse(hdc, -25, -25, 25, 25);
                
                MoveTo(hdc, 225, 200);
                LineTo(hdc, 250, 150);
                LineTo(hdc, 250, 100);
                LineTo(hdc, 225, 150);
                MoveTo(hdc, 250, 100);
                LineTo(hdc, 275, 150);
                MoveTo(hdc, 250, 150);
                LineTo(hdc, 275, 200);
                Ellipse(hdc, 225, 75, 275, 100);
                
                EndPaint(hwnd, &ps);
                return 0; 
 
            case WM_DESTROY: 
                PostQuitMessage(0); 
                return 0; 
    } 
 
 return DefWindowProc(hwnd, iMsg, wParam, lParam); 
}
fit13
0 / 0 / 0
Регистрация: 26.02.2015
Сообщений: 11
10.03.2015, 10:44     Вывести в окне фигуры: домик, человечек, солнце #3
скопировал код, выдает две ошибки
Ошибка 1 error C2440: =: невозможно преобразовать 'char [9]' в 'LPCWSTR' c:\users\iy3031\documents\visual studio 2008\projects\sadfhj\sadfhj\sadfhj.cpp 31 sadfhj
Ошибка 2 error C2664: CreateWindowExW: невозможно преобразовать параметр 2 из 'char [9]' в 'LPCWSTR' c:\users\iy3031\documents\visual studio 2008\projects\sadfhj\sadfhj\sadfhj.cpp 40 sadfhj
zss
Модератор
Эксперт С++
 Аватар для zss
5948 / 5553 / 1785
Регистрация: 18.12.2011
Сообщений: 14,188
Завершенные тесты: 1
10.03.2015, 11:03     Вывести в окне фигуры: домик, человечек, солнце #4
Отключите использование уникода в свойствах проекта
Меню
Проект- свойства - свойства конфигурации - набор знаков
"Не задано (not set)"
fit13
0 / 0 / 0
Регистрация: 26.02.2015
Сообщений: 11
10.03.2015, 12:06     Вывести в окне фигуры: домик, человечек, солнце #5
сделал, теперь другие ошибки вылезли
Ошибка 1 error LNK2019: ссылка на неразрешенный внешний символ _main в функции ___tmainCRTStartup MSVCRTD.lib sadfhj
Ошибка 2 fatal error LNK1120: 1 неразрешенных внешних элементов C:\Users\iy3031\Documents\Visual Studio 2008\Projects\sadfhj\Debug\sadfhj.exe sadfhj

Добавлено через 26 минут
все ,спасибо большое, сам разобрался

Добавлено через 26 минут
теперь другая проблема:Фигуры должны быть заполнены разными цветами и разными кистями (минимум три варианта различной штриховки).
zss
Модератор
Эксперт С++
 Аватар для zss
5948 / 5553 / 1785
Регистрация: 18.12.2011
Сообщений: 14,188
Завершенные тесты: 1
10.03.2015, 12:42     Вывести в окне фигуры: домик, человечек, солнце #6
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
 case WM_PAINT:
   {   // будут локальные переменные -  берем case в скобки
                hdc = BeginPaint(hwnd, &ps); 
                HPEN pen1,pen2,penOld;
                pen1=CreatePen(PS_SOLID,1,RGB(255,0,0)); // самое красное перо толщиной 1 пиксел
                pen2=CreatePen(PS_SOLID,3,RGB(0,255,0)); // самое зеленое перо толщиной 3 пиксела
 
               HBRUSH br1,br2,brOld;
               br1=CreateSolidBrush(RGB(255,255,0)); // Желтая кисть         
               br2=CreateSolidBrush(RGB(0,0,255));    //Синяя кисть                
 
                penOld=(HPEN)SelectObject(hdc,pen1); // выбрали 1 перо и 
                brOld=(HBRUSH)SelectObject(hdc,br1);   // первую кисть
                Rectangle(hdc, 100, 100, 200, 200);
                MoveTo(hdc, 100, 100);
                LineTo(hdc, 150, 50);
                LineTo(hdc, 200, 100);
                
                SelectObject(hdc,pen1); // выбрали 2 перо
                MoveTo(hdc, 0, 0);
                LineTo(hdc, 25, 50);
                MoveTo(hdc, 0, 0);
                LineTo(hdc, 50, 50);
                MoveTo(hdc, 0, 0);
                LineTo(hdc, 50, 25);
                Ellipse(hdc, -25, -25, 25, 25);
                ....
                SelectObject(hdc,penOld); //восстановили исходное перо 
                SelectObject(hdc,brOld); //восстановили исходную кисть
 
                DeleteObject(hdc,pen1); //удалили все созданные ресурсы 
                DeleteObject(hdc,pen2); //удалили все созданные ресурсы 
                DeleteObject(hdc,br1); //удалили все созданные ресурсы 
                DeleteObject(hdc,br2); //удалили все созданные ресурсы 
              
                
                EndPaint(hwnd, &ps);
                return 0;
  }
Yandex
Объявления
10.03.2015, 12:42     Вывести в окне фигуры: домик, человечек, солнце
Ответ Создать тему
Опции темы

Текущее время: 16:11. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru