Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » C/C++ - [C++Builder 2007] Форма по рисунку

Ответить
Настройки темы
C/C++ - [C++Builder 2007] Форма по рисунку

Аватара для crashtuak

Старожил


Сообщения: 467
Благодарности: 25


Конфигурация

Профиль | Отправить PM | Цитировать


Вот код, по которому форма рисоваться должна по маске
Код: Выделить весь код
void __fastcall TForm1::FormCreate(TObject *Sender)
{
POINT pt;
pt.x = 0; pt.y = 0;
HRGN R1=CreateRgnFromBitmap("C:\\1.bmp",pt,true);
SetWindowRgn(Handle, R1, TRUE);
}
//---------------------------------------------------------------------------
HRGN CreateRgnFromBitmap(Graphics::TBitmap *bmp, TPoint pPoint, bool bEqaul = true)
{
int f, x, y;
bool b = false;
HRGN Rgn, ResRgn = CreateRectRgn(0, 0, 0, 0);
for (y = 0; y < bmp->Height; y++)
 for (x = 0; x < bmp->Width; x++)
 {
   if (!bEqaul^(bmp->Canvas->Pixels[x][y] != bmp->Canvas->Pixels[pPoint.x][pPoint.y]))
   {
	 if (!b)
	  {  f = x; b = true; }
	 else
	   if (x == (bmp->Width - 1))
	   {
		 Rgn = CreateRectRgn(f, y, x, y + 1);
		 CombineRgn(ResRgn, ResRgn, Rgn, RGN_OR);
		 b = false;
	   }
   }
   else
	 if (b)
	 {
	   Rgn = CreateRectRgn(f, y, x, y + 1);
	   CombineRgn(ResRgn, ResRgn, Rgn, RGN_OR);
	   b = false;
	 }
 }
return ResRgn;
}
но после компиляции дает ошибку :[BCC32 Error] Unit1.cpp(27): E2148 Default argument value redeclared for parameter 'bEqaul'. Что я делаю не так?

-------
Мне надо не так много "Полезных сообщений", чтоб сровнять их количество с моими постами :).


Отправлено: 17:54, 12-04-2009

 

Аватара для crashtuak

Старожил


Сообщения: 467
Благодарности: 25

Профиль | Отправить PM | Цитировать


C предыдущей проблемой разобрался, есть новая
Код: Выделить весь код
First chance exception at $7C812AEB. Exception class EAccessViolation with message 'Access violation at address 00401E07 in module 'Project2.exe'. Read of address 2E013A63'. Process Project2.exe (3288)
. Как побороть? Чувствую я неправильно битмап гружу.

-------
Мне надо не так много "Полезных сообщений", чтоб сровнять их количество с моими постами :).


Отправлено: 18:43, 12-04-2009 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Аватара для Alan85

Забанен


Сообщения: 463
Благодарности: 91

Профиль | Цитировать


Тут две ошибки:
1) в функции CreateRgnFromBitmap - первый параметр указатель на битмап, а ты передаешь строку - надо вот так:
Код: Выделить весь код
void __fastcall TForm1::FormCreate(TObject *Sender)
{
POINT pt;
pt.x = 0; pt.y = 0;
Graphics::TBitmap *bmp = new Graphics::TBitmap;
bmp->LoadFromFile("c:\\1.bmp");
HRGN R1=CreateRgnFromBitmap(bmp,pt,true);
SetWindowRgn(Handle, R1, TRUE);
bmp->Free();
}
2) функция CreateRgnFromBitmap реализована ниже чем первый раз используется. Поэтому функция void __fastcall TForm1::FormCreate(TObject *Sender) должна находить ниже ее.
Код: Выделить весь код
 HRGN CreateRgnFromBitmap(Graphics::TBitmap *bmp, TPoint pPoint, bool bEqaul = true)
{
int f, x, y;
bool b = false;
HRGN Rgn, ResRgn = CreateRectRgn(0, 0, 0, 0);
for (y = 0; y < bmp->Height; y++)
 for (x = 0; x < bmp->Width; x++)
 {
   if (!bEqaul^(bmp->Canvas->Pixels[x][y] != bmp->Canvas->Pixels[pPoint.x][pPoint.y]))
   {
	 if (!b)
	  {  f = x; b = true; }
	 else
	   if (x == (bmp->Width - 1))
	   {
		 Rgn = CreateRectRgn(f, y, x, y + 1);
		 CombineRgn(ResRgn, ResRgn, Rgn, RGN_OR);
		 b = false;
	   }
   }
   else
	 if (b)
	 {
	   Rgn = CreateRectRgn(f, y, x, y + 1);
	   CombineRgn(ResRgn, ResRgn, Rgn, RGN_OR);
	   b = false;
	 }
 }
return ResRgn;
}
//---------------------------------------------------------------------------   */
void __fastcall TForm1::FormCreate(TObject *Sender)
{
POINT pt;
pt.x = 0; pt.y = 0;
Graphics::TBitmap *bmp = new Graphics::TBitmap;
bmp->LoadFromFile("c:\\1.bmp");
HRGN R1=CreateRgnFromBitmap(bmp,pt,true);
SetWindowRgn(Handle, R1, TRUE);
bmp->Free();
}

Отправлено: 21:49, 12-04-2009 | #3


Аватара для crashtuak

Старожил


Сообщения: 467
Благодарности: 25

Профиль | Отправить PM | Цитировать


Цитата Alan85:
1) в функции CreateRgnFromBitmap - первый параметр указатель на битмап, а ты передаешь строку - надо вот так: »
Додумался до этого раньше чем ты написал, но и так спасибо
Цитата Alan85:
2) функция CreateRgnFromBitmap реализована ниже чем первый раз используется. Поэтому функция void __fastcall TForm1::FormCreate(TObject *Sender) должна находить ниже ее. »
На счет этого не знаю, у меня как было CreateRgnFromBitmap ниже чем первый раз используется, так и осталось, но зато работает

-------
Мне надо не так много "Полезных сообщений", чтоб сровнять их количество с моими постами :).


Отправлено: 07:47, 13-04-2009 | #4


Аватара для Alan85

Забанен


Сообщения: 463
Благодарности: 91

Профиль | Цитировать


Цитата crashtuak:
у меня как было CreateRgnFromBitmap ниже чем первый раз используется, так и осталось, но зато работает »
у меня просто BDS без ошибок и зависаний вырубался (как будто и не было его)

Отправлено: 07:53, 13-04-2009 | #5


Аватара для crashtuak

Старожил


Сообщения: 467
Благодарности: 25

Профиль | Отправить PM | Цитировать


Цитата Alan85:
у меня просто BDS без ошибок и зависаний вырубался (как будто и не было его) »
С ним у меня и не такое было: новою строку начать нажатием ентера невозможно было, а печатая символ вы автоматом стирали следующий но потом стало все нормально, а ещё перешел на С++ Билдер 2009 так ваще круто

-------
Мне надо не так много "Полезных сообщений", чтоб сровнять их количество с моими постами :).


Отправлено: 22:40, 13-04-2009 | #6


Аватара для Drongo

Будем жить, Маэстро...


Сообщения: 6694
Благодарности: 1393

Профиль | Сайт | Отправить PM | Цитировать


Цитата crashtuak:
новою строку начать нажатием ентера невозможно было, а печатая символ вы автоматом стирали следующий »
Так это симптомы случайно нажатой клавиши Insert Нажми её ещё раз и будет счастье.

-------
Правильная постановка вопроса свидетельствует о некотором знакомстве с делом.
3нание бывает двух видов. Мы сами знаем предмет — или же знаем, где найти о нём сведения.
[Quick Killer 3.0 Final [OSZone.net]] | [Quick Killer 3.0 Final [SafeZone.cc]] | [Парсер логов Gmer] | [Парсер логов AVZ]

http://tools.oszone.net/Drongo/Userbar/SafeZone_cc.gif

Это сообщение посчитали полезным следующие участники:

Отправлено: 12:07, 14-04-2009 | #7


Аватара для crashtuak

Старожил


Сообщения: 467
Благодарности: 25

Профиль | Отправить PM | Цитировать


Цитата Drongo:
Так это симптомы случайно нажатой клавиши Insert Нажми её ещё раз и будет счастье. »
Во блин А я тыкал куда попало и все прошло.. Закрыть бы тему. Я сейчас новую сделаю.

-------
Мне надо не так много "Полезных сообщений", чтоб сровнять их количество с моими постами :).


Отправлено: 19:52, 14-04-2009 | #8



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » C/C++ - [C++Builder 2007] Форма по рисунку

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Разное - [решено] Совместим ли C++Builder 2007 с Windows 7? ineXPert Microsoft Windows 7 5 17-01-2010 13:27
C/C++ - Visual C++ 9.0 и C++Builder 2007 - программы на голой винде (без .NET и тд) crashtuak Программирование и базы данных 9 10-09-2009 22:25
C/C++ - [C++Builder 2009] Форма по png файлу с альфа каналом (есть пример на дельфи) crashtuak Программирование и базы данных 9 16-04-2009 08:30
C/C++ - [C++Builder 2007] Две формы поверх всех окон и одна форма поверх другой crashtuak Программирование и базы данных 3 13-04-2009 16:33
C/C++ - [решено] [C++Builder 2007] TTreeView & CheckBox crashtuak Программирование и базы данных 1 12-04-2009 12:08




 
Переход