Pause welche unterbrochen werden kann
-
Hi
Ich habe ein Intro erstellt mit einer Funktion aus der FAQ..
Dieses funktioniert ohne Probleme...
Ich möchte aber, wenn der Benutzer ESC-drückt, dass das Intro beendet wird und im Programm weitergefahre wird!
Das Problem ist, dass die funktion für das Intro einfach das AVI startet aber nicht wartet sondern gerade witerfährt. Aus diesem Grund habe ich die funktionsleep(12000);eingefügt. So funktioniert das ganze nun auch, aber wie kann ich es nun anstellen, dass ich das Intro unterbrechen kann und somit auch die Funktion sleep unterbrochen wird?
Bitte helft mir, da ich langsam richtig Ratlos bin!
-
video in einem zweiten thread abspielen. im hauptthread die tasten prüfen und wenn esc gedrückt wurde beende den zweiten thread.
-
und wie erstelle ich den 2. Thread?
-
addict schrieb:
und wie erstelle ich den 2. Thread?
was genau meinst du?
vielleicht:
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dllproc/base/createthread.asp
-
addict schrieb:
...und somit auch die Funktion sleep unterbrochen wird?
nimmste windof? da gibts die funktion 'SleepEx'
guckst du: http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dllproc/base/sleepex.asp
-
net schrieb:
nimmste windof?
Gibt's die WinAPI jetzt auch schon für Linux?

-
masterofx32 schrieb:
Gibt's die WinAPI jetzt auch schon für Linux?

na das kleine 's' bei 'sleep' sah verdächtig aus
-
Vielen Dank!
Ich verstehe aber das ganze mit SleepEx nich ganz.... Ich kann diese funktion doch immer aufrufen und kontrolliere, ob die Zeit bereits vorbei ist oder nicht?
Wenn das bis jetzt stimmt, kann ich also immer z.BDWOR hallo=SleepEx(500,TRUE);aufrufen und es gibt immer die Rückmeldung ob die 500millis. bereits verstrichen sind? Wird so nicht immer eine neue Pause eingefügt????
-
probier dies:
#define _WIN32_WINNT 0x0500 #include <windows.h> #include <stdio.h> DWORD WINAPI thread (void *x) { while (1) { puts ("thread legt sich schlafen fuer 5 sekunden..."); if (0 == SleepEx (5000, TRUE)) puts ("zeit abgelaufen"); else puts ("sleep abgebrochen"); } return 0; } void WINAPI apc (void *x) { puts ("\"klick\""); } int main() { DWORD tid; HANDLE h = CreateThread (NULL, 0, (LPTHREAD_START_ROUTINE)thread, 0, 0, &tid); puts ("<enter> druecken zum abbrechen"); while (1) { getchar(); QueueUserAPC ((PAPCFUNC)apc, h, 0); } }
-
@net:
Nimm in deinem Code besser _beginthread anstelle CreateThread. Du rufst im Thread schließlich Funktionen der libc auf.
-
cd9000 schrieb:
@net:
Nimm in deinem Code besser _beginthread anstelle CreateThread. Du rufst im Thread schließlich Funktionen der libc auf.zu umständlich - da muss man die multithreaded-libs linken, #define _MT usw. das soll ja nur ein beispiel sein, darf ruhig mal abstürzen
