DirectDraw: Ausgabe nicht sichtbar

Hallo,

ich habe folgendes Problem:


surface.open_window( hInstance, 1024, 768, 8 );
uchar *screen = (uchar *) surface.get_screen_pointer();
for( long x=0 ; xSetCooperativeLevel( main_window_handle, DDSCL_ALLOWREBOOT | DDSCL_EXCLUSIVE | DDSCL_FULLSCREEN | DDSCL_ALLOWMODEX ) != DD_OK ) exit( „Fehler während der Ausführung von SetCooperativeLevel().\n“ );

memset( &surface_description, 0, sizeof( surface_description ) );
surface_description.dwSize = sizeof( surface_description );
surface_description.dwFlags = DDSD_CAPS;
surface_description.ddsCaps.dwCaps = DDSCAPS_PRIMARYSURFACE;

if( main_dd_object->CreateSurface( &surface_description, &primary_surface, NULL ) != DD_OK ) exit( „Fehler während der Ausführung von CreateSurface().\n“ );

Hallo Fragewurm,

Windows arbeite mit Meldungen, es werden also nicht direkt Funktionen in einem Objekt, eigentlich einem anderen Task oder Thread, aufgerufen, sondern dieser bekommt eine Meldung mit den Parametern zugestellt.

ich habe folgendes Problem:

>pre>:surface.open_window( hInstance, 1024, 768, 8 );

uchar *screen = (uchar *) surface.get_screen_pointer();
for( long x=0 ; x

Dein angesprochenes Objekt bekommt nie die Möglichkeit seine Meldungen zu lesen und abzuarbeiten.

while (!handle_input(&message));

Packe ich das ganze in eine Schleife:

:surface.open\_window( hInstance, 1024, 768, 8 );


> uchar \*screen = (uchar \*) surface.get\_screen\_pointer();  
> while (1)  
> {  
> if (handle\_input(&message)) break;  
> for( long x=0 ; x


In diesem Fall, wird bei jedem Aufruf von handle\_input() die Meldungs-Queue abgearbeitet und das entsprechende Fenster bekommt die Möglichkeit seine Meldungen auszuwerten.

MfG Peter(TOO)

Vielen Dank, ich habe es jetzt so gemacht:

uchar *screen = (uchar *) surface.get_screen_pointer();
for( long x=0 ; x

Hallo Ruben,

Vielen Dank, ich habe es jetzt so gemacht:

uchar *screen = (uchar *) surface.get_screen_pointer();
for( long x=0 ; x

Ok dann werd ich mich da mal umschaun.
oder gibt es eine Möglichkeit, in der Message Queu einfach eine Meldung auszugeben, die die genauen Message-Infos ausgibt?

Dann noch eine Frage:
Wenn ich nach dieser Schleife primary_surface->Unlock(NULL); ausführe, ist sichtbar wie alles gezeichnet wird, aber sobald fertig gezeichnet ist und Unlock aufgerufen wird, sehe ich nur noch einen schwarzen Bildschirm, an was könnte das wieder liegen?

Danke,

Ruben Grill