Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Низкоуровневое программирование > Win Api
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 11.06.2008, 01:11   #1
HunterMan
Пользователь
 
Регистрация: 01.04.2008
Сообщений: 58
По умолчанию Проблемы с добавлением ресурсов??

Код:
hDc = BeginPaint(hwnd, &ps);				
hBitmap=(HBITMAP)LoadImage(NULL,"c:\\documents and settings\\vitalya\\рабочий стол\\1.bmp",IMAGE_BITMAP,0,0,LR_LOADFROMFILE);
				GetObject(hBitmap,sizeof(BITMAP),&bitmap);
				hCompatibleDC=CreateCompatibleDC(hDc);
				hOldBitmap=SelectObject(hCompatibleDC,hBitmap);
				StretchBlt(hDc,0,0,rect.right,rect.bottom,
					hCompatibleDC,0,0,bitmap.bmWidth,bitmap.bmHeight,SRCCOPY);
				SelectObject(hCompatibleDC,hOldBitmap);
				DeleteObject(hBitmap);
				DeleteDC(hCompatibleDC);
				EndPaint(hwnd, &ps);
				break;
При выводе в окно рисунка из файла этот код работает нормально.
Но для такой реализации нужно иметь при себе всегда рисунок.
Поэтому пробую его "засунуть" в ресурсы. Для этого в файле ресурсов добавляю строку:

ACP BITMAP "c:\\documents and settings\\vitalya\\рабочий стол\\1.bmp"

Изменяю код:

Код:
hDc = BeginPaint(hwnd, &ps);
				hBitmap=(HBITMAP)LoadImage(MainIns,"ACP",IMAGE_BITMAP,0,0,0);				
				GetObject(hBitmap,sizeof(BITMAP),&bitmap);
				hCompatibleDC=CreateCompatibleDC(hDc);
				hOldBitmap=SelectObject(hCompatibleDC,hBitmap);
				StretchBlt(hDc,0,0,rect.right,rect.bottom,
					hCompatibleDC,0,0,bitmap.bmWidth,bitmap.bmHeight,SRCCOPY);
				SelectObject(hCompatibleDC,hOldBitmap);
				DeleteObject(hBitmap);
				DeleteDC(hCompatibleDC);
				EndPaint(hwnd, &ps);
				break;
Этот код не работает

В чем проблема может быть? Может такое быть что рисунок не добавляется в рисурсы программы?

Последний раз редактировалось B_N; 11.06.2008 в 01:16.
HunterMan вне форума Ответить с цитированием
Старый 11.06.2008, 01:22   #2
B_N
Новичок
Джуниор
 
Регистрация: 18.01.2008
Сообщений: 1,720
По умолчанию

LoadImage(MainIns,MAKEINTRESOURCE(ACP),IMAGE_BITMAP,0,0,0);
ну и т.д. И в файле resource.h или кто там у Вас за него должна быть определена соответствующая константа. И имя константы не ахти какое "говорящее"

Кстати, Вы *.rc-файлы вручную что ли делаете?
B_N вне форума Ответить с цитированием
Старый 11.06.2008, 01:40   #3
HunterMan
Пользователь
 
Регистрация: 01.04.2008
Сообщений: 58
По умолчанию

1. Я в файле *.rc добавляю строку... Делаю почти в ручную, потому что в проэкте(чего уже в нем токо нету) покакой-то причине отказываются работать внесенные по "шаблонам" изменения и при этом еще выдает ошибку, которую предлагает отослать разработчику. Т.е. я вношу изменения в ресурсы...а када пробую сохранить, то выскакивает ошибка, окно Вижуала закрывается...
2. АСР-говорящее название для автоматчика ))) В файле рисунок структурной схемы одноконтурной Автоматической Системы Регулирования. Шо имею то и вставляю...
3. А нащет MAKEINTRESOURCE примного благодарен. Щас попробую.


Попробовал...не хочет. Может по той-же причине, что и описаная ошибка, оно не хочет работать?

И еще вопрос. Если я для вывода рисунка создаю отдельное окно, которое создается по нажатию кнопки диалога, то какой HINSTANCE нужно указывать в качестве первого параметра функции LoadImage(...)?? В литературе прочитал, что это тот параметр, который принимает функция WinMain(...). Так ли это?

Последний раз редактировалось HunterMan; 11.06.2008 в 01:48.
HunterMan вне форума Ответить с цитированием
Старый 11.06.2008, 18:55   #4
B_N
Новичок
Джуниор
 
Регистрация: 18.01.2008
Сообщений: 1,720
По умолчанию

HunterMan, проверяйте константу ACP, правильно ли Вы её определили в заголовке, является ли она уникальной и т.п. Если MainIns - это то, что Вы получаете параметром WinMain, то должно работать, в LoadImage нужно передавать адрес модуля, содержащего ресурс.

Код:
	hBmp = (HBITMAP)LoadImage(hInstance, MAKEINTRESOURCE(IDB_BITMAP1), IMAGE_BITMAP, 0, 0, 0);
	hBmp = (HBITMAP)LoadImage(GetModuleHandle(NULL), MAKEINTRESOURCE(IDB_BITMAP1), IMAGE_BITMAP, 0, 0, 0);
Оба этих варианта - рабочие. (исходя из того, что ресурс в экзешнике)

Смотрите, какую ошибку возвращает LoadImage, давайте всё-таки оперировать фактами, а не догодками. Попробуйте всё-таки решить проблему с VS (если, конечно, это не экспресс-версия), хотя прямой связи здесь нет - "плохой" rc-файл всё равно не скомпилируется. Возьмите какой-нибудь редактор ресурсов, скажем этот: http://www.resedit.net/
B_N вне форума Ответить с цитированием
Старый 12.06.2008, 02:33   #5
HunterMan
Пользователь
 
Регистрация: 01.04.2008
Сообщений: 58
По умолчанию

Спс...разобрался с редактором ресурсов...он мне помог.
HunterMan вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Файлы ресурсов Черничный Общие вопросы Delphi 1 14.07.2008 05:49
Проблема с добавлением в БД VenMaster БД в Delphi 8 03.06.2008 21:02
меню в делфи с добавлением новой функции к уже существующей БД Ane4ka БД в Delphi 22 27.05.2008 15:40
Файл ресурсов Stanislav Общие вопросы Delphi 11 21.11.2007 08:27