Hi
ich habe nochma ein kleines DDraw prob, was ich ganz gerne beheben würde
.
ich habe hier meinen code:
|
C-/C++-Quelltext
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
|
x=0;
TestObject.Set_High_Width(200, 150);
TestObject.set_Koordinaten(x, 0);
TestObject.LoadBitmap("Test.bmp");
running=true;
while(running)
{
if (PeekMessage(&msg,NULL,0,0,PM_REMOVE))
{
if (msg.message == WM_QUIT) break;
TranslateMessage(&msg);
DispatchMessage(&msg);
Main.Clear_Scren();
TestObject.Draw_Object();
}
Main.Render();
}
Main.Release_All();
return msg.wParam ;
}
|
x is als global definiert
. das ist aber nur ein zwischenstandpunkt, da ich grade ers dabei bin, nach und nach alle sachen zu implementieren, da ich sonst mir wohl zuviele fehler auch in den verbindungen der klassen einbaune würde
.
jetz erhöhe ich im messageloop wenn man shift drückt(ja, directinput kommt nach dem ddraw modul
), x um 10 erhöhen
|
C-/C++-Quelltext
|
1
2
3
4
5
6
|
case VK_SHIFT:
{
x = x + 10;
TestObject.set_Koordinaten(x, 0);
return 0;
}
|
so, aber wennich jetz shift drücke, blittet er alte und neue position. obwohl ich den back vorher gecleart hab. wenn ich allerdings nochma auf shift drücke, verschied sich das doppelgebilde
habt ihr da evlt ne idee?
hier noch die klassenfunktionen:
|
C-/C++-Quelltext
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
|
void Object::set_Koordinaten(int x, int y)
{
Koordinaten[0] = x;
Koordinaten[1] = y;
}
void Object::LoadBitmap(char* path)//LoadBitmap(char path, RECT BitmapRect)
{
lpddsBitmap = DDLoadBitmap(lpDirectDraw, path, High, Width);
}
void Object::Draw_Object()
{
DDraw_I = Main.getDirectDrawInstance();
SetRect(&rectbitmap, Koordinaten[0], Koordinaten[1], Koordinaten[0]+High , Koordinaten[1]+ Width);
DDraw_I.BlitBitmap(rectbitmap, lpddsBitmap);
}
void Object::Set_High_Width(int New_High, int New_Width)
{
High = New_High;
Width = New_Width;
}
|
wenn ich das bild net bewege, läuft alels normal.
danke im vorraus
Mfg
Eldarion