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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 14, средняя оценка - 4.93
whizzkey
7 / 7 / 0
Регистрация: 16.10.2010
Сообщений: 74
#1

Как закрасить Rectangle - C++

20.01.2012, 16:53. Просмотров 1822. Ответов 16
Метки нет (Все метки)

Всем привет, у меня такая проблема - сделал програмку которая рисует рандомно прямоугольники в небольшой форме, теперь хочу чтобы они были разноцветными, добавил пару строк но компилятор выдал мне Extra parameter in call to __stdcall Rectangle(HDC__ *,int,int,int,int)
Вот инклуды и переменные
C++
1
2
3
4
5
6
7
8
9
10
#include <windows.h>    
#pragma hdrstop
#define SizeWindow 400  
//описание переменных
MSG msg;            
HDC hdc;            
HBRUSH hBrush;      
HWND Wnd;       
WNDCLASS wnds;      
char ClassName[255]="Rectangle";
Вот часть кода где вылетает ошибка
C++
1
2
3
4
hBrush=CreateSolidBrush(random(1000000));
Rectangle(hdc,random(SizeWindow),
random(SizeWindow/2),
random(SizeWindow),random(SizeWindow),hBrush);
причем без hBrush'а все работает и рисует без проблем
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
20.01.2012, 16:53     Как закрасить Rectangle
Посмотрите здесь:

Класс Rectangle совпадает с функцией Rectangle - C++
Пишу свой класс Rectangle, который при отрисовки использует функцию Rectangle из GDI. Возникает ошибка из-за того, что имена одинаковые. Но...

Как закрасить треугольник? - C++
Как мне закрасить треугольники? #include&lt;windows.h&gt; #include&lt;string.h&gt; #define ID_TIMER 1 HBRUSH tbrush; HBRUSH tbrush1; ...

Как закрасить линию? - C++
Вот линия MoveToEx(hdc,0,350,0); LineTo(hdc,700,350); Как сделать чтобы она была красной например?

Как закрасить шар полностью? - C++
Здравствуйте! Мне хотелось закрасить шар полностью, но при использовании команды SetFillColor закрашивался фон. Где у меня в логике...

Как закрасить круг (circle) - C++
Как закрасить круг в любой цвет, не могу найти таких ф-ций, setfillstyle не подходит

Как закрасить прямоугольник кроме кружков? - C++
#include &lt;iostream&gt; #include &lt;Windows.h&gt; #include &lt;clocale&gt; using namespace std; class figure { protected: int x = 100, y =...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Melkor
30 / 30 / 1
Регистрация: 15.12.2011
Сообщений: 108
20.01.2012, 17:12     Как закрасить Rectangle #2
поидее надо написать так
C++
1
2
3
4
hBrush=CreateSolidBrush(random(1000000));
HGDIOBJ oldBrush = SelectObject(hdc, hBrush);
//рисуем прямоугольник, не передавая браш в Rectangle функцию.
SelectObject(oldBrush);
whizzkey
7 / 7 / 0
Регистрация: 16.10.2010
Сообщений: 74
20.01.2012, 17:20  [ТС]     Как закрасить Rectangle #3
дык при этом теряются координаты и прямоугольники не рисуются рандомно
Melkor
30 / 30 / 1
Регистрация: 15.12.2011
Сообщений: 108
20.01.2012, 17:29     Как закрасить Rectangle #4
Цитата Сообщение от whizzkey Посмотреть сообщение
дык при этом теряются координаты и прямоугольники не рисуются рандомно
ты просто неправильно используешь gdi функции. нужно вот так вот
C++
1
2
3
4
5
6
hBrush=CreateSolidBrush(random(1000000));
HGDIOBJ oldBrush = SelectObject(hdc, hBrush);
Rectangle(hdc,random(SizeWindow),
random(SizeWindow/2),
random(SizeWindow),random(SizeWindow));
SelectObject(oldBrush);
whizzkey
7 / 7 / 0
Регистрация: 16.10.2010
Сообщений: 74
20.01.2012, 17:39  [ТС]     Как закрасить Rectangle #5
Повыскакивали Ошибки!!!
C++
1
2
3
#1 Cannot convert 'void *' to 'HDC__ *'
#2 Type mismatch in parameter 'hdc' (wanted 'HDC__ *', got 'void *')
#3 Too few parameters in call to '__stdcall SelectObject(HDC__ *,void *)'

З.Ы. я gdi правильно подключил? HGDIOBJ oldBrush;
Melkor
30 / 30 / 1
Регистрация: 15.12.2011
Сообщений: 108
20.01.2012, 17:45     Как закрасить Rectangle #6
тебя не затруднит выложить проэкт ? т.к. я пользовался MFC обертками для рисования, и мне тяжело так на абум анализировать ошибки.
whizzkey
7 / 7 / 0
Регистрация: 16.10.2010
Сообщений: 74
20.01.2012, 17:56  [ТС]     Как закрасить Rectangle #7
Держи
Вложения
Тип файла: rar Process1.rar (2.48 Мб, 22 просмотров)
Melkor
30 / 30 / 1
Регистрация: 15.12.2011
Сообщений: 108
20.01.2012, 18:12     Как закрасить Rectangle #8
ооо, все нашел, мой бок, надо SelectObject(hdc, oldBrush); вместо SelectObject(oldBrush);
сори
whizzkey
7 / 7 / 0
Регистрация: 16.10.2010
Сообщений: 74
20.01.2012, 18:20  [ТС]     Как закрасить Rectangle #9
Серавно загоняет, ругается на case , комментю SelectObject(hdc, oldBrush) и HGDIOBJ oldBrush=SelectObject(hdc, hBrush) и все работает по старому(
Melkor
30 / 30 / 1
Регистрация: 15.12.2011
Сообщений: 108
20.01.2012, 18:22     Как закрасить Rectangle #10
попробуй так
C++
1
2
3
4
5
6
7
8
9
10
case WM_TIMER:
{
hBrush=CreateSolidBrush(random(1000000));
HGDIOBJ oldBrush = SelectObject(hdc, hBrush);
Rectangle(hdc,random(SizeWindow),
random(SizeWindow/2),
random(SizeWindow),random(SizeWindow));
SelectObject(hdc, oldBrush);
}
break;
whizzkey
7 / 7 / 0
Регистрация: 16.10.2010
Сообщений: 74
20.01.2012, 18:29  [ТС]     Как закрасить Rectangle #11
Не, убрать дефолт я немогу, иначе окно программы не появляется
Melkor
30 / 30 / 1
Регистрация: 15.12.2011
Сообщений: 108
20.01.2012, 18:31     Как закрасить Rectangle #12
ок, что за ошибка там вылетает ??? ибо у мя в студии все собралось норм.
whizzkey
7 / 7 / 0
Регистрация: 16.10.2010
Сообщений: 74
20.01.2012, 18:39  [ТС]     Как закрасить Rectangle #13
я делаю в C++ Buildere, он пишет Case bypasses initialization of a local variable
..............
Хехе все я разобрался - убрал инициализацию переменной HGDIOBJ oldBrush = SelectObject(hdc, hBrush) из Каси и о Чудо! все пашет=)
Melkor
30 / 30 / 1
Регистрация: 15.12.2011
Сообщений: 108
20.01.2012, 18:43     Как закрасить Rectangle #14
возьми код под case в фигурные скобочки, т.к. там используецо локальная переменная.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
20.01.2012, 18:51     Как закрасить Rectangle
Еще ссылки по теме:

с++ rectangle - C++
Всем привет,падает первый же ассерт в rectangle_test.cpp,не могу понять почему,преподаватель сказал что намутил с инициализацией,но вроде в...

ООП С++ rectangle - C++
Всем привет.Возникла проблема с написанием метода,не смог найти алгоритм решения.Надеюсь на помощь) Сам метод: Метод определения...

Классы Rectangle - C++
Определите в классе Rectangle функцию Line, которая выводит на экран координаты точек, между которыми должна быть нарисована линия

Задача на классы (Rectangle) - C++
Создать класс Rectangle, который сохраняет Декартовы координаты четырех вершин прямоугольника, конструктор для инициализации закрытых...


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

Или воспользуйтесь поиском по форуму:
retmas
Жарю без масла
859 / 741 / 164
Регистрация: 13.01.2012
Сообщений: 1,694
20.01.2012, 18:51     Как закрасить Rectangle #15
Цитата Сообщение от whizzkey Посмотреть сообщение
Всем привет, у меня такая проблема - сделал програмку которая рисует рандомно прямоугольники в небольшой форме, теперь хочу чтобы они были разноцветными, добавил пару строк но компилятор выдал мне Extra parameter in call to __stdcall Rectangle(HDC__ *,int,int,int,int)
Вот инклуды и переменные
C++
1
2
3
4
5
6
7
8
9
10
#include <windows.h>    
#pragma hdrstop
#define SizeWindow 400  
//описание переменных
MSG msg;            
HDC hdc;            
HBRUSH hBrush;      
HWND Wnd;       
WNDCLASS wnds;      
char ClassName[255]="Rectangle";
Вот часть кода где вылетает ошибка
C++
1
2
3
4
hBrush=CreateSolidBrush(random(1000000));
Rectangle(hdc,random(SizeWindow),
random(SizeWindow/2),
random(SizeWindow),random(SizeWindow),hBrush);
причем без hBrush'а все работает и рисует без проблем
так и должно быть. ф-ия Rectangle принимает 5 параметров, а не 6, и hBrush там лишний
Yandex
Объявления
20.01.2012, 18:51     Как закрасить Rectangle
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru