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

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

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 14, средняя оценка - 4.93
whizzkey
7 / 7 / 0
Регистрация: 16.10.2010
Сообщений: 74
20.01.2012, 16:53     Как закрасить Rectangle #1
Всем привет, у меня такая проблема - сделал програмку которая рисует рандомно прямоугольники в небольшой форме, теперь хочу чтобы они были разноцветными, добавил пару строк но компилятор выдал мне 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
Посмотрите здесь:

C++ Как закрасить шар полностью?
C++ Как закрасить треугольник?
Как закрасить линию? C++
C++ Реализовать класс Rectangle
Как закрасить круг (circle) C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
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 в фигурные скобочки, т.к. там используецо локальная переменная.
retmas
Жарю без масла
803 / 685 / 143
Регистрация: 13.01.2012
Сообщений: 1,580
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 там лишний
Melkor
30 / 30 / 1
Регистрация: 15.12.2011
Сообщений: 108
20.01.2012, 18:56     Как закрасить Rectangle #16
канешн, hBrush убери оттуда, я наверное провтыкал
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
20.01.2012, 18:58     Как закрасить Rectangle
Еще ссылки по теме:

Классы Rectangle C++
C++ Класс Point и Rectangle
C++ Класс Rectangle (прямоугольник)

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

Или воспользуйтесь поиском по форуму:
whizzkey
7 / 7 / 0
Регистрация: 16.10.2010
Сообщений: 74
20.01.2012, 18:58  [ТС]     Как закрасить Rectangle #17
Всё уже работает! см #13 пост, можно закрывать тему
Yandex
Объявления
20.01.2012, 18:58     Как закрасить Rectangle
Ответ Создать тему
Опции темы

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