Форум программистов, компьютерный форум, киберфорум
C/C++: WinAPI
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.50/8: Рейтинг темы: голосов - 8, средняя оценка - 4.50
0 / 0 / 0
Регистрация: 29.10.2012
Сообщений: 57

Графика, фигуры

21.04.2014, 22:34. Показов 1732. Ответов 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
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
#include "stdafx.h"
#include "Project 13.h"
#include <windows.h>  // для доступа к API функциям
#include <wingdi.h>   // для доступа к GDI функциям
// Прототип оконной функции
LRESULT CALLBACK WndProc( HWND, UINT, WPARAM, LPARAM );
 
int APIENTRY WinMain(HINSTANCE hInstance,
                     HINSTANCE hPrevInstance, 
                     LPSTR lpszCmdLine,
                     int iCmdShow )
{
   HWND hWnd; //handle окна
   MSG msg;   // экземпляр sructure для сообщений
   WNDCLASSEX wndclass;//экземпляр structure для класса окна(12 полей) 
   static char szWndClass[]="WndClass for LobodaEA.cpp";//имя класса 
   static char szWndTitle[]="Мое первое Windows окно средствами API"; 
/*******************************************************************\
* 1 Задание и регистрация параметров нашего оконного класса (12 зн.) *
\*******************************************************************/
      wndclass.lpszClassName = szWndClass; 
      wndclass.lpfnWndProc = WndProc; 
      wndclass.style=CS_SAVEBITS|CS_VREDRAW|CS_HREDRAW|CS_DBLCLKS;
      wndclass.hInstance = hInstance; 
      wndclass.hIcon = LoadIcon( NULL, IDI_APPLICATION );
      wndclass.hIconSm = LoadIcon( NULL, IDI_QUESTION );
      wndclass.hCursor = LoadCursor( NULL, IDC_ARROW );
      wndclass.hbrBackground = CreateSolidBrush(RGB(255,255,255));
      wndclass.lpszMenuName = NULL;
      wndclass.cbClsExtra = 0;
      wndclass.cbWndExtra = 0;
      wndclass.cbSize=sizeof(wndclass);
 
      RegisterClassEx(&wndclass);
/**************************************************************\
* 2 Создание на основе этого класса конкретной реализации       *
*    окна программы в RAM(пока без вывода на экран)             *
\**************************************************************/
  hWnd = CreateWindowEx(WS_EX_STATICEDGE,
                        szWndClass, 
                        szWndTitle,  
                        WS_OVERLAPPEDWINDOW | WS_HSCROLL | WS_VSCROLL, 
                        CW_USEDEFAULT,CW_USEDEFAULT, 
                        CW_USEDEFAULT,CW_USEDEFAULT, 
                        0,
                        0, 
                        hInstance,
                        NULL);
/**************************************************************\
* 3  Изображение окна на экране                                  *
\**************************************************************/
    ShowWindow( hWnd, iCmdShow );
    UpdateWindow(hWnd);
/*************************************************************\
* 4  Цикл предварительной обработки сообщений ( == бесконечный)* 
\*************************************************************/
   while( GetMessage( &msg, NULL, 0, 0 ) ) 
    {  TranslateMessage( &msg );
       DispatchMessage( &msg );
    }
 return msg.wParam; 
}  // конец WinMain
 
// Оконная функция - действия программы по обработке сообщений                      
// !!! вызывается только самим Windows.
LRESULT CALLBACK WndProc( HWND hWnd, UINT uMsgName, 
                          WPARAM wParam, LPARAM lParam )
 
{ PAINTSTRUCT ps; // для работы BeginPaint() по сообщению WM_PAINT
  HDC hDC;        // для вывода на экран
 
  switch(uMsgName)
 {//Обработаем лишь сообщения:WM_KEYDOWN,WM_PAINT,WM_DESTROY:
 
   case WM_KEYDOWN: //==нажатие на любую клавишу клавиатуры
    hDC=GetDC(hWnd);// ! Обязательно для последующего выполнения вывода 
// Квадрат
   static HGDIOBJ hNewPen,hOldPen,hNewBrush,hOldBrush;
   hNewPen=CreatePen(PS_INSIDEFRAME,10,RGB(200,50,50));
   hNewBrush=CreateHatchBrush(HS_CROSS,RGB(50,100,200));
   hOldPen=SelectObject(hDC,hNewPen);
   hOldBrush=SelectObject(hDC,hNewBrush); 
   Rectangle(hDC,30,30,1030,570);
   SelectObject(hDC,hOldPen);
   SelectObject(hDC,hOldBrush);
   DeleteObject(hNewPen);
   DeleteObject(hNewBrush);
// Элипс
   hNewPen=CreatePen(PS_INSIDEFRAME,5,RGB(100,200,0)); 
   hOldPen=SelectObject(hDC,hNewPen); 
     Ellipse(hDC,200,200,800,400); 
   SelectObject(hDC,hOldPen);         
   DeleteObject(hNewPen);
// Многоугольник
   POINT mT[10];
   mT[0].x=250;
   mT[0].y=250;
   mT[1].x=300;
   mT[1].y=370;
   mT[2].x=680;
   mT[2].y=225;
   mT[3].x=750;
   mT[3].y=350;
   hNewBrush=CreateHatchBrush(HS_CROSS,RGB(200,100,200));
   hOldBrush=SelectObject(hDC,hNewBrush);
   Polygon(hDC,mT,4); 
   SelectObject(hDC,hOldBrush);
   DeleteObject(hNewBrush);
   
   ReleaseDC(hWnd,hDC);// ! Обязательно после выполнения вывода по этому сообщению
   break;
 
  case WM_PAINT:
   hDC = BeginPaint(hWnd,&ps);// !!! Обязательно в начале WM_PAINT (для вывода)
      
         SetBkColor(hDC,RGB(255,255,0));// Цвет фона символов 
         SetTextColor(hDC,RGB(255,0,0));// Цвет букв текста
         TextOut(hDC,10,10,"Нажмите на любую клавишу", 24);//Вывод текста
 
   EndPaint(hWnd,&ps);// !!! Обязательно в конце WM_PAINT (после вывода)
   break;
 
  case WM_DESTROY:
   PostQuitMessage(0); 
   break;
 
  default:
   return( DefWindowProc( hWnd, uMsgName, wParam, lParam ));
 }//конец switch() 
 return 0;
}//конец WndProc()
ошибки
C++
1
2
3
4
5
6
c:\users\gkris_000\documents\visual studio 2012\projects\project 13\project 13\project 13.cpp(24): error C2440: =: невозможно преобразовать "char [26]" в "LPCWSTR"
1>          Типы, на которые указывают указатели, не связаны; для преобразования требуется reinterpret_cast, приведение в стиле С или приведение в стиле функции
1>c:\users\gkris_000\documents\visual studio 2012\projects\project 13\project 13\project 13.cpp(51): error C2664: CreateWindowExW: невозможно преобразовать параметр 2 из "char [26]" в "LPCWSTR"
1>          Типы, на которые указывают указатели, не связаны; для преобразования требуется reinterpret_cast, приведение в стиле С или приведение в стиле функции
1>c:\users\gkris_000\documents\visual studio 2012\projects\project 13\project 13\project 13.cpp(121): error C2664: TextOutW: невозможно преобразовать параметр 4 из "const char [25]" в "LPCWSTR"
1>          Типы, на которые указывают указатели, не связаны; для преобразования требуется reinterpret_cast, приведение в стиле С или приведение в стиле функции
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
21.04.2014, 22:34
Ответы с готовыми решениями:

Поворот фигуры. Графика
Предоставить пользователю возможность задать количество квадратов “n”. Причем каждый последующий квадрат должен быть вписан в...

Графика, движение фигуры
День добрый, написал программу движения фигуры. Фигура начинает двигаться с центра по диагонали, а нужно что бы двигалась с левого нижнего...

Проецирование фигуры из 3D графика в 2D
Здравствуйте! Подскажите пожалуйста, как возможно (с помощью функций, математических операций или еще чего-нибудь) спроецировать любой 3D...

2
 Аватар для Vaiz
104 / 98 / 40
Регистрация: 01.07.2012
Сообщений: 277
21.04.2014, 22:49
Kristi-na, проблема в кодировках. В некоторых местах используется юникод кодировка.

Вот например тут надо писать так
TextOut(hDC,10,10,_T("Нажмите на любую клавишу"), 24);//Вывод текста

Ну и вместо char используйте TCHAR

static TCHAR szWndClass[]="WndClass for LobodaEA.cpp";//имя класса
static TCHAR szWndTitle[]="Мое первое Windows окно средствами API";

Если интересно, подробнее почитайте здесь http://habrahabr.ru/post/164193/
1
0 / 0 / 0
Регистрация: 29.10.2012
Сообщений: 57
21.04.2014, 23:01  [ТС]
Vaiz, Большое спасибо за помощь. Получилось и поняла причину и спасибо за ссылку)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
21.04.2014, 23:01
Помогаю со студенческими работами здесь

Вычислить площадь фигуры. Графика
Вычислить площадь фигуры, ограниченной линиями y=e в степени x, y=1/x, x=0, x=2, y=0. Дать геометрическую иллюстрацию.

Поворот фигуры. Компьютерная графика
Пытаюсь повернуть фигуру по часовой стрелке. При повороте фигура уменьшается в размерах и стремится в точку(начало координат). В чём...

Компьютерная графика. Реализация фигуры додекаэдр
class MYAPPLICATION : public APPLICATION_3D { ... // Начальные координаты мыши int mX; int mY; // Изменение...

Построение объемного графика или объемной фигуры
Привет всем. Нужно построит объемный график или объемную фигуру в Visual Basic. Например можно построить олимпийские кольца. Заранее...

Графика: в заданной части графического экрана нарисовать вложенные фигуры
В заданной части графического экрана нарисовать фигуру 1 , в середине фигуры 1 - фигуру 2 , а в середине фигуры 2 - круг. Все элементы...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
Мысли в слух. Про "навсегда".
kumehtar 16.04.2026
Подумалось тут, что наверное очень глупо использовать во всяких своих установках понятие "навсегда". Это очень сильное понятие, и я только начинаю понимать край его смысла, не смотря на то что давно. . .
My Business CRM
MaGz GoLd 16.04.2026
Всем привет, недавно возникла потребность создать CRM, для личных нужд. Собственно программа предоставляет из себя базу данных клиентов, в которой можно фиксировать звонки, стадии сделки, а также. . .
Знаешь почему 90% людей редко бывают счастливыми?
kumehtar 14.04.2026
Потому что они ждут. Ждут выходных, ждут отпуска, ждут удачного момента. . . а удачный момент так и не приходит.
Фиксация колонок в отчете СКД
Maks 14.04.2026
Фиксация колонок в СКД отчета типа Таблица. Задача: зафиксировать три левых колонки в отчете. Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка) / / . . .
Настройки VS Code
Loafer 13.04.2026
{ "cmake. configureOnOpen": false, "diffEditor. ignoreTrimWhitespace": true, "editor. guides. bracketPairs": "active", "extensions. ignoreRecommendations": true, . . .
Оптимизация кода на разграничение прав доступа к элементам формы
Maks 13.04.2026
Алгоритм из решения ниже реализован на нетиповом документе, разработанного в конфигурации КА2. Задачи, как таковой, поставлено не было, проделанное ниже исключительно моя инициатива. Было так:. . .
Контроль заполнения и очистка дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: реализовать контроль корректности заполнения дат назначения. . .
Архитектура слоя интернета для сервера-слоя.
Hrethgir 11.04.2026
В продолжение https:/ / www. cyberforum. ru/ blogs/ 223907/ 10860. html Знаешь что я подумал? Раз мы все источники пишем в голове ветки, то ничего не мешает добавить в голову такой источник, который сам. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru