C/C++ - [решено] Окно-заставка с фоновым изображением

Ответить
Аватара пользователя
DimensionSlider

C/C++ - [решено] Окно-заставка с фоновым изображением

Сообщение DimensionSlider »

День добрый!

Задача следующая:

На время загрузки программы, я на экран вывожу окно-заставку(как у ворда или экселя выскакивает перед запуском), которое делаю через 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

Re: C/C++ - [решено] Окно-заставка с фоновым изображением

Сообщение DimensionSlider »

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





Код:

Код: Выделить всё

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;
Ответить

Вернуться в «Программирование и базы данных»