Witam, mam pytanie odnosnie ustawienia tla okna z bitmapy... Wiem ze to juz bylo wiele razy ale siedze nad tym wiecej niz nad samym programem i nici, potrzebuje poprawy kodu...
HBITMAP hbmObraz;
hbmObraz =( HBITMAP ) LoadImage( NULL, "pk", IMAGE_BITMAP, 0, 0, LR_LOADFROMFILE );
case WM_ERASEBKGND:
return 0;
break;
case WM_PAINT:
{
PAINTSTRUCT ps;
HDC hdc;
HDC hdcNowy = CreateCompatibleDC(hdc);
hdc = BeginPaint (hwnd, &ps);
SelectObject( hdcNowy, hbmObraz );
BITMAP bmInfo;
GetObject( hbmObraz, sizeof( bmInfo ), & bmInfo );
hdc = GetDC( hwnd );
BitBlt( hdc, 0, 0, bmInfo.bmWidth, bmInfo.bmHeight, hdcNowy, 0, 0, SRCCOPY );
EndPaint( hwnd, & ps );
ReleaseDC( hwnd, hdc );
DeleteObject( hbmObraz );
DeleteDC( hdcNowy );
}
break;
Najpierw w ogole nie pokazywala mi sie bitmapa, pozniej pokazala sie ale znikala przez WM_ERASEBKGND, teraz utrzymuje sie ciagle ale nie refreszuje mi static'ow. W timerze zmieniam ich tekst i zamiast sie czyscic to naklada sie jeden na drugi... Tak jak mowie, prosze o poprawe tego kodu jezeli bylby ktos tak mily ;). Dzieki z gory ;)
Nie ma tu nikogo obeznanego w winapi? ;/
Dobra, dziala jako tako w ten sposob:
case WM_PAINT:
{
PAINTSTRUCT ps;
HBITMAP hbmObraz;
hbmObraz =( HBITMAP ) LoadImage( NULL, "pk", IMAGE_BITMAP, 0, 0, LR_LOADFROMFILE );
HDC hdc;
hdc = BeginPaint (hwnd, &ps);
HDC hdcNowy = CreateCompatibleDC(hdc);
SelectObject( hdcNowy, hbmObraz );
BITMAP bmInfo;
GetObject( hbmObraz, sizeof( bmInfo ), & bmInfo );
hdc = GetDC( hwnd );
BitBlt( hdc, 0, 0, bmInfo.bmWidth, bmInfo.bmHeight, hdcNowy, 0, 0, SRCCOPY );
ReleaseDC( hwnd, hdc );
DeleteObject( hbmObraz );
DeleteDC( hdcNowy );
EndPaint(hwnd, &ps);
};
break;
Wczytywanie bitmapy w WM_PAINT to duze obciazenie, wiec zadeklarowalem zmienna globalna, wczytuje do niej w WINMAIM bitmape no i tu pojawia sie problem... Jezeli kod jest taki jak wyzej, dziala wszystko a jezeli wczytam w WinMain to znowu static'ki sie nie odswiezaja(jeden rysowany na drugim)... Gdzie wczytywac bitmape zeby bylo dobrze ?:/
case WM_ERASEBKGND:
return 1L; break;