Войти

Показать полную графическую версию : [решено] Окно-заставка с фоновым изображением


DimensionSlider
17-08-2007, 01:42
День добрый!
Задача следующая:
На время загрузки программы, я на экран вывожу окно-заставку(как у ворда или экселя выскакивает перед запуском), которое делаю через CreateWindow;
Отображаю текстом состояние загрузки, но хотелось бы также выводить картинку на его проверхности.
Пока не могу сообразить как.

Пробывал подход в духе:

hBmp = LoadImageA( 0, "IntroPic.bmp", IMAGE_BITMAP, 0, 0, LR_DEFAULTCOLOR | LR_LOADFROMFILE);
int error_code = GetLastError();
SendMessageA( intro_hWnd, BM_SETIMAGE, IMAGE_BITMAP, (LPARAM)hBmp );

Ошибок система не возвращает, хендл проверено ненулевой, но окно так и остается просто с белым фоном.
Подскажите пожалуйста! =)

DimensionSlider
18-08-2007, 15:18
Задача решена следующим способом


HANDLE hBmp


case WM_CREATE:
hBmp = LoadImageA( 0, "IntroPic.bmp", IMAGE_BITMAP, 0, 0, LR_DEFAULTCOLOR | LR_LOADFROMFILE);

break;

case WM_ERASEBKGND:
BITMAP bm;
HDC hdcMem;
hdcMem = CreateCompatibleDC( hDC );
SelectObject(hdcMem, hBmp);
GetObject( hBmp, sizeof(BITMAP), (LPVOID)&bm);
RECT r;
GetClientRect(hWnd, &r);

w = r.right - r.left;
h = r.bottom - r.top;
bw = bm.bmWidth;
bh = bm.bmHeight;

for(int i = 0; i < w; i += bw)
for(int j = 0; j < h; j += bh)
BitBlt(hDC, i, j, bm.bmWidth, bm.bmHeight, hdcMem, 0, 0, SRCCOPY);

DeleteDC( hdcMem );


break;




© OSzone.net 2001-2012