underberg JLI'ler
Anmeldedatum: 11.01.2003 Beiträge: 153
Medaillen: Keine
|
Verfasst am: 19.08.2003, 08:55 Titel: Allgemeine Funktion zum Initialisieren der Oberflächen |
|
|
Also ich wollte um den Quellcode übersichlicher zumachen eine allgemeine Funktion schreiben um die Oberflächen zu Initialisieren...
Also wollte ich diese Funktion (funktioniert!!!)
Code: |
DDCOLORKEY ColorKey;
HDC ScrDC;
HDC hBmpDC;
ZeroMemory(&S_Wiese,sizeof(S_Wiese));
S_Wiese.dwSize=sizeof(S_Wiese);
S_Wiese.dwFlags=DDSD_CAPS | DDSD_HEIGHT | DDSD_WIDTH;
S_Wiese.ddsCaps.dwCaps=DDSCAPS_OFFSCREENPLAIN | DDSCAPS_VIDEOMEMORY;
S_Wiese.dwWidth=Wiese_Size_X;
S_Wiese.dwHeight=Wiese_Size_Y;
if (FAILED(lpDD7->CreateSurface(&S_Wiese,&lpDD_Wiese,NULL)))
{
Error("5 Fehler beim Anlegen der Spieleroberfläche!");
}
ColorKey.dwColorSpaceLowValue=RGB(0,255,0);
ColorKey.dwColorSpaceHighValue=RGB(0,128,0);
lpDD_Wiese->SetColorKey(DDCKEY_SRCBLT,&ColorKey);
HBITMAP hDataBit=(HBITMAP)LoadImage(NULL,"c:\\1.bmp",IMAGE_BITMAP,0,0,LR_LOADFROMFILE);
lpDD_Wiese->GetDC(&ScrDC);
hBmpDC=CreateCompatibleDC(ScrDC);
SelectObject(hBmpDC,hDataBit);
BitBlt(ScrDC,0,0,Wiese_Size_X,Wiese_Size_Y,hBmpDC,0,0,SRCCOPY);
lpDD_Wiese->ReleaseDC(ScrDC);
DeleteDC(hBmpDC);
DeleteObject(hDataBit);
|
Umändern in:
Code: | void InSurf(DDSURFACEDESC2 S_Surf, LPDIRECTDRAWSURFACE7 lpDD_Surf, char* Pfad, int Size_X, int Size_Y, bool colorkey)
{
DDCOLORKEY ColorKey;
HDC ScrDC;
HDC hBmpDC;
ZeroMemory(&S_Surf,sizeof(S_Surf));
S_Surf.dwSize=sizeof(S_Surf);
S_Surf.dwFlags=DDSD_CAPS | DDSD_HEIGHT | DDSD_WIDTH;
S_Surf.ddsCaps.dwCaps=DDSCAPS_OFFSCREENPLAIN;
S_Surf.dwWidth=Size_X;
S_Surf.dwHeight=Size_Y;
if (FAILED(lpDD7->CreateSurface(&S_Surf,&lpDD_Surf,NULL)))
{
Error("5 Fehler beim Anlegen der Spieleroberfläche!");
}
if (colorkey==true)
{
ColorKey.dwColorSpaceLowValue=RGB(0,255,0);
ColorKey.dwColorSpaceHighValue=RGB(0,128,0);
lpDD_Surf->SetColorKey(DDCKEY_SRCBLT,&ColorKey);
}
HBITMAP hDataBit=(HBITMAP)LoadImage(NULL,Pfad,IMAGE_BITMAP,0,0,LR_LOADFROMFILE);
lpDD_Surf->GetDC(&ScrDC);
hBmpDC=CreateCompatibleDC(ScrDC);
SelectObject(hBmpDC,hDataBit);
BitBlt(ScrDC,0,0,Size_X,Size_Y,hBmpDC,0,0,SRCCOPY);
lpDD_Surf->ReleaseDC(ScrDC);
DeleteDC(hBmpDC);
DeleteObject(hDataBit);
} |
Und diese einfach mit
Code: | InSurf(S_Wiese,lpDD_Wiese,"c:\\1.bmp",Wiese_Size_X,Wiese_Size_Y,false); |
aufrufen...
Der erste Code klappt... Aber als ich das versucht habe in Parameter zu quetschen (Code 2 und 3) gings nicht mehr...
Wieso? |
|