Hilfe bei Pointer Problem gesucht



  • Hallo, leuts. ich hab da n riesen problem, und zwar will ich eine Funktion
    schreiben, die Sprites einliest. ich poste mal den code:

    01  LPDIRECTDRAWSURFACE7 Lade_Sprites(LPDIRECTDRAW7 lpMain, LPDIRECTDRAWSURFACE7 *lpTest, LPCTSTR Name, int widthall, int heightall, int widtheinzel, int heighteinzel, bool Surface, int menge,int anzahlges, int anzahlbreite, int anzahlhoehe)
    02 {
    03	int ferne=0;
    04	int reihe=0;
    05						//Rect fürs Blitten
    06	RECT normRect, rectSrc;			//
    07	normRect.top = 0;				//
    08       normRect.left = 0;				//
    09	normRect.right = widtheinzel-1;		//
    10	normRect.bottom = heighteinzel-1;		//
    11
    12	LPDIRECTDRAWSURFACE7 lpTest2[120];
    13	&lpTest2[0] = lpTest;
    14	lpTest2[0] = DDaw_Create_Surface(widthall, heightall,                 DDSCAPS_SYSTEMMEMORY);
    15	lpTest2[0] = DDLoadBitmap(&lpMain, Name, widthall, heightall);
    16	for(i=1; i<=menge; i++) {
    17		&lpTest2[i] = (lpTest+i);
    18		lpTest2[i] = DDaw_Create_Surface(widtheinzel, heighteinzel, DDSCAPS_VIDEOMEMORY);
    19		if((ferne<anzahlbreite) && ((((reihe)*anzahlbreite)+ferne)<anzahlges) && (reihe<anzahlhoehe)) {
    20			rectSrc.top = (reihe * heighteinzel);
    21			rectSrc.left = (ferne * widtheinzel);
    22			rectSrc.bottom = (((reihe+1) * heighteinzel)-1);
    23			rectSrc.right = (((ferne+1) * widtheinzel)-1);
    24			lpTest2[i]->Blt(&normRect, lpTest[i], &rectSrc, DDBLT_WAIT, NULL);
    25		}
    26		ferne++;
    27		if(ferne>anzahlbreite) {
    28			ferne = 0;
    29			reihe++;
    30		}
    31	}
    32
    33  }
    

    OK, jetz zu meinem Prob:

    1. Prob Zeile 13:
    Fehler C2106:Linker Operator muss L-Wert sein.
    2. Prob Zeile 17:
    Gleiches Prob.
    3. Prob Zeile 15:
    c:\Dokumente und Einstellungen\Pheonix_on_the_fly\Desktop\KuhFucking\main.cpp(78): error C2664: 'DDLoadBitmap' : Konvertierung des Parameters 1 von 'LPDIRECTDRAW7 *__w64 ' in 'IDirectDraw7 *' nicht möglich

    Was mache ich falsch, ps der header von DDLoadBitmap ist:

    extern "C" IDirectDrawSurface7* 
    DDLoadBitmap( IDirectDraw7* pdd, LPCSTR szBitmap, int dx, int dy)
    

    Diese befindet sich in ddutil.cpp im DXSDK ordner.
    Bitte um Hilfe, Dringend...
    Danke schon im Vorraus, MFG Pheonix_on_the_fly



  • bin zwar net so sicher, aber ich glaub, es liegt daran:
    du legst ja mit LPDIRECTDRAWSURFACE7 lpTest2[120]; ein Feld von 120 zeigern an.
    in zeile 13 schreibst du &lpTest2[0], was für die adresse vom ersten element steht. die adresse is ja ne zahl, ergo versuchst du mit
    &lpTest2[0] = lpTest;
    der zahl(adresse) eine neue zahl(lpTest-adr) zuzuweisen.
    lass am besten mal den &-operator weg, also
    lpTest2[0] = lpTest;
    ,dann müsste es eigentlich klappen....das gleiche in z.17.
    mit dem prob. in z.15 bin ich überfragt, weil ich net mit der util arbeite, aber prinzipiell is es halt ein typ-fehler, der nicht implizit gecastet werden kann... tut mir leid...ich schreib mir da immer selber ne funktion, daher wie gesagt null ahnung...
    gruß
    E-the-Real



  • Also wegen Zeile 15: Versuch einfach mal bei den Parametern bei DEINER Funktion anstatt "LPDIRECTDRAW7 lpMain" "LPDIRECTDRAW7* lpMain" zu schreiben. Sollte dann eigtl funktionieren. (Du musst dann beim Aufuruf der Funktion natürlich die Addresse des DDraw Objektes übergeben).

    Der &-Operator ist in den beiden anderen Zeilen überflüssig.

    Was du allerdings mit dem Code da überhaupt machen willst ist mir schleierhaft...



  • Bist du zu schlau für copy'n paste? Oder lernst du noch C++? Dann bring das doch erstmal zu Ende, bevor du mit banalen Fragen nervst. Es bringt Dir echt nur Vorteile.



  • @TGGC: wen meinst du bzw. was meinst du?



  • ethereal schrieb:

    @TGGC: wen meinst du bzw. was meinst du?

    Er meint Pheonix_on_the_fly. Bzw. daß ihm (Pheonix_on_the_fly) Grundlagenwissen fehlt, daß er sich erst noch aneignen sollte...

    [EDIT]Das Ganze packte er dann in einen süß-helfenden (aber wahrscheinlich bitter ironischen) Kommentar... 😃

    (Nun ja, dem Fragesteller ist damit nun auch nicht geholfen...)[/EDIT]



  • ich weiß zwar net, was TGGC mit copy'n paste meint, aber an alle anderen danke,

    im übrigen kann ich c++ ganz gut, bin aber erst am anfang mit DirectX.

    auf jeden fall danke an alle (ausser TGGC 🙂 ). probier ich gleich mal aus.

    MFG P_o_t_f



  • @nep: mit dem code will ich sprites laden.

    PS: nochmal danke, es hat funktioniert.



  • Pheonix_on_the_fly schrieb:

    auf jeden fall danke an alle (ausser TGGC 🙂 ).

    Dann dank' ich jetzt mal TGGC...

    ...einfach nur so: 🙂

    D-A-N-K-E !!! 😃



  • An dieser Stelle möchte ich mich nun auch nochmal bei Sgt. Nukem für den Dank bedanken, sowie allen Newbies, die uns mit dieser Art Fragen verschonen. Und sowieso bei allen, die meine Signatur lesen.


Anmelden zum Antworten