Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Программирование и базы данных (http://forum.oszone.net/forumdisplay.php?f=21)
-   -   [решено] Окно-заставка с фоновым изображением (http://forum.oszone.net/showthread.php?t=88747)

DimensionSlider 17-08-2007 01:42 628806

Окно-заставка с фоновым изображением
 
День добрый!
Задача следующая:
На время загрузки программы, я на экран вывожу окно-заставку(как у ворда или экселя выскакивает перед запуском), которое делаю через 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 629462

Задача решена следующим способом

Код:

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;



Время: 15:26.

Время: 15:26.
© OSzone.net 2001-