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

Рисование

28.09.2011, 18:01. Показов 7048. Ответов 17
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Почему код
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
#include<windows.h>
#include<string.h>
 
LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);
char szProgName[]="Имя";
 
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpszCmdLine, int nCmdShow)
{
HWND hWnd;
MSG lpMsg;
WNDCLASS w;
 
w.lpszClassName=szProgName; 
w.hInstance=hInstance; 
w.lpfnWndProc=WndProc; 
w.hCursor=LoadCursor(NULL, IDC_ARROW); 
w.hIcon=0; 
w.lpszMenuName=0; 
w.hbrBackground=(HBRUSH)GetStockObject(WHITE_BRUSH); 
w.style=CS_HREDRAW|CS_VREDRAW;
w.cbClsExtra=0;
w.cbWndExtra=0;
 
if(!RegisterClass(&w))
return 0;
 
hWnd=CreateWindow(szProgName, 
"Графика", 
WS_OVERLAPPEDWINDOW, 
100, 
100, 
500, 
400, 
(HWND)NULL, 
(HMENU)NULL, 
(HINSTANCE)hInstance, 
(HINSTANCE)NULL); 
 
ShowWindow(hWnd, nCmdShow);
UpdateWindow(hWnd);
 
while(GetMessage(&lpMsg, NULL, 0, 0)) {
TranslateMessage(&lpMsg); 
DispatchMessage(&lpMsg);
}
return(lpMsg.wParam); 
}
 
LRESULT CALLBACK WndProc(HWND hWnd, UINT messg, 
WPARAM wParam, LPARAM lParam)
{
HDC hdc; 
PAINTSTRUCT ps; 
LOGFONT lf;
HFONT hFont;
RECT r;
HBRUSH hBrush;
HPEN hPen;
 
switch(messg)
{
case WM_PAINT :
hdc=BeginPaint(hWnd, &ps);
 
strcpy(lf.lfFaceName,"Times New Roman"); 
lf.lfHeight=20;
lf.lfItalic=1;
lf.lfStrikeOut=0;
lf.lfUnderline=0;
lf.lfWidth=10;
lf.lfWeight=40;
lf.lfCharSet=DEFAULT_CHARSET; 
lf.lfPitchAndFamily=DEFAULT_PITCH; 
lf.lfEscapement=0;
 
hFont = CreateFontIndirect(&lf);
SelectObject(hdc, hFont);
SetTextColor(hdc, RGB(0,0,255));
TextOut(hdc, 80,40, "Teкст!!", 20);
 
r.top=100;
r.left=180;
r.right=400;
r.bottom=300;
FillRect(hdc, &r, HBRUSH(CreateSolidBrush(RGB(255,0,55))));
 
hBrush=CreateSolidBrush(RGB(10,200,100));
SelectObject(hdc, hBrush);
Ellipse(hdc, 20,100,200,200);
 
hBrush=CreateSolidBrush(RGB(250,200,100));
SelectObject(hdc, hBrush);
hPen=CreatePen(2,2,RGB(0,0,255));
SelectObject(hdc, hPen);
RoundRect(hdc, 20, 250, 250, 350, 15, 15);
 
 
ValidateRect(hWnd, NULL);
EndPaint(hWnd, &ps);
break;
 
case WM_DESTROY:
PostQuitMessage(0); 
DeleteObject(hPen);
DeleteObject(hBrush);
break;
 
default:
return(DefWindowProc(hWnd, messg, wParam, lParam)); 
}
return 0;
}
выдает мне такие ошибки
[Linker error] undefined reference to `GetStockObject@4'
[Linker error] undefined reference to `CreateFontIndirectA@4'
[Linker error] undefined reference to `SelectObject@8'
[Linker error] undefined reference to `SetTextColor@8'
[Linker error] undefined reference to `TextOutA@20'
[Linker error] undefined reference to `CreateSolidBrush@4'
[Linker error] undefined reference to `CreateSolidBrush@4'
[Linker error] undefined reference to `SelectObject@8'
[Linker error] undefined reference to `Ellipse@20'
[Linker error] undefined reference to `CreateSolidBrush@4'
[Linker error] undefined reference to `SelectObject@8'
[Linker error] undefined reference to `CreatePen@12'
[Linker error] undefined reference to `SelectObject@8'
[Linker error] undefined reference to `RoundRect@28'
[Linker error] undefined reference to `DeleteObject@4'
[Linker error] undefined reference to `DeleteObject@4'
ld returned 1 exit status
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
28.09.2011, 18:01
Ответы с готовыми решениями:

Рисование
Почему у меня не выводится прямоугольник LRESULT CALLBACK WindowProcedure (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam) { ...

Рисование на контроле
Всем привет! Есть главное окно: hWnd = CreateWindow(L&quot;MyClass&quot;, L&quot;Заголовок&quot;, dwStyle, CW_USEDEFAULT, CW_USEDEFAULT, rc.right -...

Рисование на форме
При рисовании стандартными функциями GDI на окне, видны отчетливо лесенки пикселей. В современных графических редакторов, собственно, таких...

17
375 / 322 / 32
Регистрация: 24.02.2011
Сообщений: 1,512
Записей в блоге: 1
28.09.2011, 18:06
Library: Use Gdi32.lib
Библиотеку подключить нужно, типа так можно pragma comment(lib, "Gdi32.lib")

Не по теме:

Чтение MSDN и поиск рекомендуется.

0
2 / 2 / 0
Регистрация: 26.03.2011
Сообщений: 121
28.09.2011, 18:23  [ТС]
записано в начало
pragma comment(lib, "Gdi32.lib")

Другого рода ошибки
`pragma' does not name a type
и т.д.
0
Исследователь
 Аватар для GrayWolf
318 / 317 / 24
Регистрация: 06.04.2011
Сообщений: 872
28.09.2011, 19:35
Цитата Сообщение от Елочка Посмотреть сообщение
pragma comment(lib, "Gdi32.lib")
точней, надо так: #pragma comment(lib, "Gdi32.lib")
Если не поможет, то тогда вопрос: в чем пишете? в какой программе?
0
60 / 57 / 8
Регистрация: 22.07.2011
Сообщений: 436
28.09.2011, 20:50
Попробуйте добавить в командной строке линкера : -lgdi32
1
375 / 322 / 32
Регистрация: 24.02.2011
Сообщений: 1,512
Записей в блоге: 1
29.09.2011, 03:52
Цитата Сообщение от GrayWolf Посмотреть сообщение
точней, надо так: #pragma comment(lib, "Gdi32.lib")
Ну, да. Решеточку я пропустил. Внимательней нужно быть .
Опять же MSDN и поиск
0
2 / 2 / 0
Регистрация: 26.03.2011
Сообщений: 121
29.09.2011, 16:32  [ТС]
Вставлено
#pragma comment(lib, "Gdi32.lib")

те же самые ошибки.
не помогает.
Пишу на DevC++
0
Исследователь
 Аватар для GrayWolf
318 / 317 / 24
Регистрация: 06.04.2011
Сообщений: 872
29.09.2011, 18:00
MinGW игнорирует эту опцию, если ты внимательно посмотришь на лог компилятора. Используй настройки проекта.
Кстати проверь настройки проекта. Не перезаписывается какой-либо другой команда линковки на странице "Files", на странице "Compiler" должно быть отключено "Dont use standard system startup file or library", на вкладке "Directories" указаны верные каталоги для хидеров и библиотек... Короче, проверь настройки проекта.

Не по теме:

Помнится, я накатал простенький лоадер для этой IDE, чтобы было возможно нормально использовать ее, таская на флэшке, не создавая каждый раз параметры заново. А позже ушел с нее, ибо понеслись какие идиотские глюки с компиляцией проектов. Попробовал множество сред, остановился на Relo, долго просидел на ней, но пришлось все равно уйти, не помню точно почему.

0
2 / 2 / 0
Регистрация: 26.03.2011
Сообщений: 121
29.09.2011, 18:26  [ТС]
Эта строка не найдена "Dont use standard system startup file or library"
У меня версия 2 и руссифицирована.
Весь сервис просмотрен ничего не настораживает.
0
Исследователь
 Аватар для GrayWolf
318 / 317 / 24
Регистрация: 06.04.2011
Сообщений: 872
29.09.2011, 18:42
Настройки посмотрел, молодец. А что с указанием библиотеки gdi32.a в свойствах проекта, а не в коде? Эээ... Чего-то голова совсем плоховато варит, болею... Компилятор какой используешь? Еще раз повторюсь
Цитата Сообщение от GrayWolf Посмотреть сообщение
MinGW игнорирует эту опцию
C++
1
#pragma comment
0
2 / 2 / 0
Регистрация: 26.03.2011
Сообщений: 121
30.09.2011, 17:08  [ТС]
такая библиотека числится: lib\libgdi32.a
использую DevC++ Version 2
0
Исследователь
 Аватар для GrayWolf
318 / 317 / 24
Регистрация: 06.04.2011
Сообщений: 872
30.09.2011, 17:46
Значит все-таки MinGW... В свойствах проекта путь до нее указан? Там обычно отображается относительный путь - этакий "плюс" IDE
0
Эксперт GPSS
 Аватар для SergProgC++
555 / 414 / 105
Регистрация: 02.07.2010
Сообщений: 1,729
30.09.2011, 21:35
попробуй мой уже откомпилированный проект, в твоем коде ошибок нет, только видать компилятор не верно настроен
Вложения
Тип файла: rar 1.rar (1.09 Мб, 66 просмотров)
1
Brainsbreaker
 Аватар для Digit@ll
899 / 374 / 54
Регистрация: 01.02.2011
Сообщений: 1,608
30.09.2011, 22:15
Только объекты остались не удаленные.
0
Эксперт GPSS
 Аватар для SergProgC++
555 / 414 / 105
Регистрация: 02.07.2010
Сообщений: 1,729
01.10.2011, 00:04
Ну это да! по ссылке надо удалять кисти и перья
0
Исследователь
 Аватар для GrayWolf
318 / 317 / 24
Регистрация: 06.04.2011
Сообщений: 872
01.10.2011, 06:38
Цитата Сообщение от SergProgC++ Посмотреть сообщение
попробуй мой уже откомпилированный проект
Думаю "что ж размер-то такой большой?" А это студия родимая :-)
0
Brainsbreaker
 Аватар для Digit@ll
899 / 374 / 54
Регистрация: 01.02.2011
Сообщений: 1,608
01.10.2011, 10:24
Ну да, файлов много там лишних, включая exe.
0
60 / 57 / 8
Регистрация: 22.07.2011
Сообщений: 436
01.10.2011, 20:27
Если в Dev-c++ то поможет: сервис - параметры компилятора - Добавить эти команды к строке компоновщика : -lgdi32. И всё прекрасно работает.
2
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
01.10.2011, 20:27
Помогаю со студенческими работами здесь

Рисование и поток
Всем привет, хочу научится рисовать, используя потоки: у меня есть вектор, в котором я храню информацию: ...

Рисование в окне
Здравствуйте. Я пишу программу средствами WIN API на C++. У меня такой вопрос: Есть ли встроенные функции, позволяющие рисовать в окне...

Рисование линейки
Есть функция,рисующая линейку сверху и слева,мне всё понятно в работе функции,кроме того,что она рисует линейку по длине почти всего...

Рисование в ListView
Я создаю ListView контрол и заполняю его элементами и субэлементами. Подскажите, каким образом в одном из subitem'ов можно нарисовать к...

Рисование в окне
Есть задача - рисование различных картинок при клике левой и правой кнопкой мыши. Решил вот так: #include &quot;TemplWnd.h&quot; ...


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

Или воспользуйтесь поиском по форуму:
18
Ответ Создать тему
Новые блоги и статьи
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка SDL3 и Box2D из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru