Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[3.136.154.103] |
|
Сообщ.
#1
,
|
|
|
Есть приложение (exe), которое должно загружать картинки bmp из библиотеки (dll) с ресурсами.
|
Сообщ.
#2
,
|
|
|
Цитата E.A. @ Почему не работает ? Ошибок не выдает, но картинка не отображается Ошибок нет, потому что ты их не проверяешь. Проверь, что hbmp != NULL и что возвращают функции SelectObject, BitBlt и т.д. И вроде при обработке WM_PAINT надо получать контекст не из GetDC, а hdc = BeginPaint(...); |
Сообщ.
#3
,
|
|
|
Цитата E.A. @ Есть приложение (exe), которое должно загружать картинки bmp из библиотеки (dll) с ресурсами. Исходник файла ресурсов покажи. Ещё лучше - весь проект. |
Сообщ.
#4
,
|
|
|
Там, кстати, необязательно вызывать функцию из dll. Вроде можно загрузить ресурс напрямую hLib = ::LoadLibrary(...); ... LoadBitmap(hLib, ...);
|
Сообщ.
#5
,
|
|
|
Цитата E.A. @ Разобрался void AboutPaint(HWND hwnd) { HDC hdc, hcmpdc; HBITMAP hbmp; PAINTSTRUCT ps; RECT rect; GetClientRect(hwnd, &rect); hdc = GetDC(hwnd); hcmpdc = CreateCompatibleDC(hdc); // BeginPaint(hwnd, &ps); dll::aboutdll3 DllLoadBitmap = (dll::aboutdll3) GetProcAddress(e::abouthdll, "DllLoadBitmap"); //hbmp = DllLoadBitmap(e::hinst, 0); // <----------- вместо этого hbmp = DllLoadBitmap(e::abouthdll, 0); // <----------- нужно это SelectObject(hcmpdc, hbmp); BitBlt(hdc, 0, 0, rect.right - rect.left, rect.bottom - rect.top, hcmpdc, 0, 0, SRCCOPY); EndPaint(hwnd, &ps); // ReleaseDC(hwnd, hdc); DeleteDC(hcmpdc); DeleteObject(hbmp); } Вариант: SelectObject(hcmpdc, hbmp); // узнаем размер картинки BITMAP bmpObj = {0}; ::GetObject(hbmp,sizeof(bmpObj),&bmpObj); ::BitBlt(hdc, 0, 0, bmpObj.bmWidth, bmpObj.bmHeight, hcmpdc, 0, 0, SRCCOPY); |