Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht Das deutsche QBasic- und FreeBASIC-Forum
Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!
 
FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen  RegistrierenRegistrieren
ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin
Zur Begleitseite des Forums / Chat / Impressum
Aktueller Forenpartner:

Winmm und DSound
Gehe zu Seite 1, 2  Weiter
 
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Windows-spezifische Fragen
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
Eternal_pain



Anmeldungsdatum: 08.08.2006
Beiträge: 1783
Wohnort: BW/KA

BeitragVerfasst am: 25.02.2007, 05:24    Titel: Winmm und DSound Antworten mit Zitat

Mehr aus langeweile und zufall bin ich auf FreeBASIC gekommen und hab damit meinen Spass am Programmieren wieder gefunden da es nicht viele unterschiede gegenüber PowerBASIC gab.
Anfänglich über die verbesserung und vereinfacherung vieler functionen erfreut tauchten gleichzeitig aber auch neue und komplexere probleme beim Game-Development auf...

Ohne Sound ist das beste Spiel nichts, da gibts ja immernoch FMod, und so einfach und gut es auch ist, finde ich es einfacher und sinnvoller von Windows vorhandene API's zu nutzen aus Lizens und Ego gründen zwinkern

Jetzt ist es aber leider nicht ganz so einfach wie ich mir das vorgestellt habe, denn leider habe ich keine ahnung wie ich die Winmm-Waveout functionen für das streamen von WAV-dateien nutzen kann und bei DSound ist es mir bislang auch nur gelungen mir alle geräte anzeigen zu lassen.

Hat hier möglicherweise einige erfahrung mit den beiden DLLs oder eine ahnung wo ich eine gut verstädnliche referenz zu den wichtigsten functionen finde ?!
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen MSN Messenger
ThePuppetMaster



Anmeldungsdatum: 18.02.2007
Beiträge: 1837
Wohnort: [JN58JR]

BeitragVerfasst am: 25.02.2007, 10:59    Titel: Antworten mit Zitat

http://www.vbfun.de/vb/directx.shtml


MfG
TPM
_________________
[ WebFBC ][ OPS ][ ToOFlo ][ Wiemann.TV ]
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Eternal_pain



Anmeldungsdatum: 08.08.2006
Beiträge: 1783
Wohnort: BW/KA

BeitragVerfasst am: 25.02.2007, 19:55    Titel: Antworten mit Zitat

Irgendwie war es nicht wirklich hilfreich,
Das problem ist das ich bei allen beschreiben und Examples, die hauptsächlich in c sind bei dem Setzen des Prioritäten Level nur zwei werte finde in der FreeBASIC Declaration sind das aber drei werte ?!

zum testen habe ich jetzt erstma:
Code:

Dim DSobj as LPDIRECTSOUND8
Dim m as Hresult

m=DirectSoundCreate8 (NULL,@DSobj,NULL)


da m=0 ist geh ich davon aus das es richtig ist und geklappt hat, aber weiter...

IDirectSound8_SetCooperativeLevel(???1,DSSCL_PRIORITY,???2)
was gehört da rein und wie geht das ??
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen MSN Messenger
ThePuppetMaster



Anmeldungsdatum: 18.02.2007
Beiträge: 1837
Wohnort: [JN58JR]

BeitragVerfasst am: 25.02.2007, 20:08    Titel: Antworten mit Zitat

C??? ... hast du den Link mal gelesen?!? .. da steht "VB"!!! ... das hat nix mit C zu tun ...

im grunde kannst du den VB code fast komplett in dein prog rein kopieren, udn das sollte funzen!

Dein SetCorpLevel, is die zugriffsrecht-Festlegung. Du kannst deiner Hardware sagen, welche Programme alles auf die Geräte zugreifen dürfen, oder auch nicht.

Zitat:
4.6 Erstellen des DirectSound-Objektes
Um nun das DirectSound-Objekt zu erstellen und zu aktivieren, fügen wir in
unser Beispiellisting die DirectSoundCreate()-Methode ein und übergeben dieser
die Guid des aktiven Audiogerätes.
Set m_ds = g_dx.DirectSoundCreate (dsEnum.GetGuit(1))
SetCooperativeLevel()
Setzt den Cooperative Level der Applikation auf die Soundkarte.
object.SetCooperativeLevel(hwnd As Long, _
level As CONST_DSSCLFLAGS)
object ein gültiges DirectSound-Objekt
hwnd Windows-Handle der Aplikation
level Prioritätsstufe CONST_DSSCLFLAGS

Da Windows eine Multitaskingumgebung besitzt und mehrere Applikationen auf
die Soundkarte gleichzeitig zugreifen können, setzen wir ähnlich wie bei Direct-
Draw den Cooperative Level und schützen somit unsere Anwendung vor fehlerhaften
Zugriffen auf geschützte Bereiche.
m_ds.SetCooperativeLevel Form1.hWnd, DSSCL_NORMAL
• Normal Cooperative Level
Im normalen Cooperative Level ist es nicht möglich, das Format des primären
SoundBuffers zu ändern sowie in diesen zu schreiben. Alle Applikationen mit
diesem CooperativeLevel nutzen das Primärbufferformat 22KHz Stereo Sound
und 8 Bit Sampling. In diesem Modus ist es möglich, das Audiogerät zwischen
verschiedenen Applikationen hin und her zu schalten.
• Priority Cooperative Level
Wenn DirectSound im Priority Cooperative Level Modus ausgeführt wird, hat
Ihre Applikation das erste Recht auf die Hardwarerecourcen des Audiogerätes.
Das Format des primären Soundbuffers sowie das Komprimieren des On-
Board-Speichers des Audiogerätes ist möglich.
• Exclusive Cooperative Level
Im Exlusive Cooperative Level hat, wie der Name schon sagt, Ihre Applikation
alle exclusiven Zugriffsrechte auf das Audiogerät. Ist die Anwendung aktiv, ist
der Soundbuffer ausschließlich Ihrer Applikation zugeordnet. Andere laufende
Anwendungen haben keinen Zugriff mehr auf das Audiogerät.
• Write-primary Cooperative Level
Der höchste Cooperative Level ist der Write-primary Cooperative Level.
Wenn DirectSound mit dieser Einstellung ausgeführt wird, hat Ihre Anwendung
direkten Zugriff auf den primären Soundbuffer. In diesem Modus muss
von Ihrer Applikation direkt in den primären Soundbuffer geschrieben werden.
Wird Direct Sound nicht in dieser Einstellung ausgeführt, führen alle Versuche,
mit DirectSoundBuffer.ReadBuffer und DirectSoundBuffer.WriteBuffer
auf den Primärbuffer zuzugreifen, zwangsläufig zu einem Fehler.
Wenn Sie diesen Modus benutzen und Ihre Anwendung hat den Fokus, stoppen
alle Sekundärbuffer anderer Applikationen. Wenn Ihre Applikation den Fokus
verliert, wird der Primärbuffer als verloren gekennzeichnet. Um Ihre Anwendung
fortzusetzen, muss der Primärbuffer erneuert werden. Mehr Informationen hierzu
unter Buffer-Management.
objekt.SetCooperativeLevel (hwnd as Long, level As_
CONST_DSSCLFLAGS)



MfG
TPM
_________________
[ WebFBC ][ OPS ][ ToOFlo ][ Wiemann.TV ]
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Eternal_pain



Anmeldungsdatum: 08.08.2006
Beiträge: 1783
Wohnort: BW/KA

BeitragVerfasst am: 25.02.2007, 20:15    Titel: Antworten mit Zitat

Ja, habe gesehen das es für VB ist, das versteh ich noch weniger als C

Ich weiss auch wozu der cooperativelevel ist, aber nicht wie ich ihn anwende..

ich weiss nicht was der Handle Pointer vor der CE ist und warum in FreeBasic 3 angaben sind anstatt wie überall zwei

IDirectSound8_SetCooperativeLevel(p,a,b)

Code:

SetCooperativeLevel as function (byval as IDirectSound8 ptr, byval as HWND, byval as DWORD) as HRESULT


aus der IDirectSound8Vtbl
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen MSN Messenger
ThePuppetMaster



Anmeldungsdatum: 18.02.2007
Beiträge: 1837
Wohnort: [JN58JR]

BeitragVerfasst am: 25.02.2007, 20:46    Titel: Antworten mit Zitat

hmm .. also .. wenn du VB weniger gut kannst, als C, dann solltest FreeBasic ja gensu, wenig, gut können, wie C bzw. VB ...

Nochmal: FB is fast zu 99% Syntax-Gleich zu VB.

Zu deinem Problem.

VB ist Objekt-Orientiert
FB nicht wirklich, allerdings kann es auch auf Objekte Zugreifen.
Zitat:
objekt.SetCooperativeLevel (hwnd as Long, level As
CONST_DSSCLFLAGS)

Zitat:
SetCooperativeLevel as function (byval as IDirectSound8 ptr, byval as HWND, byval as DWORD) as HRESULT


Mit ein bischen Kreativität, kommt dann das hier raus:
Zitat:
objekt.SetCooperativeLevel (hwnd as Long, level As
CONST_DSSCLFLAGS)
object. = Dein DS-Objekt
HWND = Dein handel zu einem Fenster, welches die Events auffangen soll (wenn welche vergeben werden), bzw. das Fenster, welches den Hohen Prioritären Zufriff hat.
level = Die Zufriffsebene für dein programm, und das der anderen

Zitat:
SetCooperativeLevel as function (byval as IDirectSound8 ptr, byval as HWND, byval as DWORD) as HRESULT

byval as IDirectSound8 ptr = objekt (Ein Pointer zu diesem Objekt)
byval as HWND = HWND
byval as DWORD = LEVEL

PS: Result liefert einen Fehlercode, wenn es nicht erfolgreich war.


MfG
TPM
_________________
[ WebFBC ][ OPS ][ ToOFlo ][ Wiemann.TV ]
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Jojo
alter Rang


Anmeldungsdatum: 12.02.2005
Beiträge: 9736
Wohnort: Neben der Festplatte

BeitragVerfasst am: 25.02.2007, 20:49    Titel: Antworten mit Zitat

ThePuppetMaster hat Folgendes geschrieben:

Nochmal: FB is fast zu 99% Syntax-Gleich zu VB.


... was man aber nur von vb classic sagen kann, .net is ja mal gar nicht mehr kompatibel zwinkern und classic vb is auch nur "halb" objekt-orientiert...
_________________
» Die Mathematik wurde geschaffen, um Probleme zu lösen, die es nicht gäbe, wenn die Mathematik nicht erschaffen worden wäre.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
ThePuppetMaster



Anmeldungsdatum: 18.02.2007
Beiträge: 1837
Wohnort: [JN58JR]

BeitragVerfasst am: 25.02.2007, 20:52    Titel: Antworten mit Zitat

Stimmt. ... hätt ich hinzufügen sollen .. (/me = VB6) durchgeknallt ... sry


MfG
TPM
_________________
[ WebFBC ][ OPS ][ ToOFlo ][ Wiemann.TV ]
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Jojo
alter Rang


Anmeldungsdatum: 12.02.2005
Beiträge: 9736
Wohnort: Neben der Festplatte

BeitragVerfasst am: 25.02.2007, 20:53    Titel: Antworten mit Zitat

ich ja auch zwinkern
_________________
» Die Mathematik wurde geschaffen, um Probleme zu lösen, die es nicht gäbe, wenn die Mathematik nicht erschaffen worden wäre.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Eternal_pain



Anmeldungsdatum: 08.08.2006
Beiträge: 1783
Wohnort: BW/KA

BeitragVerfasst am: 25.02.2007, 21:13    Titel: Antworten mit Zitat

Hab das Programmieren durch FreeBASIC erst vor kurzem wieder für mich entdeckt... Windows,Dll und Call back Pointer operationen ect. sind absolutes neuland für mich...

bislang bin ich irgendwie nicht wirklich weitergekommen, werd es aber weiter versuchen.

danke trotzdem für den vielversprechenden versuch zwinkern
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen MSN Messenger
ThePuppetMaster



Anmeldungsdatum: 18.02.2007
Beiträge: 1837
Wohnort: [JN58JR]

BeitragVerfasst am: 25.02.2007, 21:17    Titel: Antworten mit Zitat

Du hast eien Variable.
"DS_Objekt as Object"
In diesem erstellst du das Objekt für DirektSound (DS)

Wenn du nun irgend welche aufrufe machst, und diese benötigen das Objekt, dann verlangen sie einen Pointer zu diesem (Einen Speicherpunkt)

Diesen kannst du ganz einfach durch "objptr(DS_Objekt)" ausgeben lassen.

objptr() = ObjektPointer (Adresse der Objekt-Variable)
varptr() = VariablenPointer (Adresse der Speichrvariable)

Diesen wert übergibst du dann deiner API, und sie ist zufrieden.


MfG
TPM
_________________
[ WebFBC ][ OPS ][ ToOFlo ][ Wiemann.TV ]
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Eternal_pain



Anmeldungsdatum: 08.08.2006
Beiträge: 1783
Wohnort: BW/KA

BeitragVerfasst am: 25.02.2007, 23:18    Titel: Antworten mit Zitat

verdammt, warum hat mir keiner gesagt das ich ein Screen haben muss damit der mist funktioniert ????
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen MSN Messenger
ThePuppetMaster



Anmeldungsdatum: 18.02.2007
Beiträge: 1837
Wohnort: [JN58JR]

BeitragVerfasst am: 26.02.2007, 00:21    Titel: Antworten mit Zitat

Nein! .. das verstehst du falsch ... du braucht kein Screen, von DS aus, sondern nur einen Handel zu einem Fenster. aber, du musst kein DirektDraw Objekt erzeugen!

Du brauchst nur ein Handel, für "eventuelle" Rückmeldungen, wenn du Events nutzen möchtest, und für die CoopModes, damit DX weis, wer was von Ihm will, und wer nicht darf.

PS: hoffe, das ich das jetzt nicht falsch verstanden hab, was du geschrieben hast grinsen


MfG
TPM
_________________
[ WebFBC ][ OPS ][ ToOFlo ][ Wiemann.TV ]
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Eternal_pain



Anmeldungsdatum: 08.08.2006
Beiträge: 1783
Wohnort: BW/KA

BeitragVerfasst am: 26.02.2007, 00:32    Titel: Antworten mit Zitat

Hab das mit dem Handle einfach nicht verstanden, hab nur gelesen das es der pointer zu den ausgabefenster ist, warum auch immer, ich will ja nur ton von directx, aber nachdem ich 'n Screen und den handle als screenptr gemacht habe bekam ich eine gültige rückmeldung.... jetzt muss ich nur noch versuchen Buffer zu erzeugen, alles schritt für schritt zwinkern
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen MSN Messenger
ThePuppetMaster



Anmeldungsdatum: 18.02.2007
Beiträge: 1837
Wohnort: [JN58JR]

BeitragVerfasst am: 26.02.2007, 00:58    Titel: Antworten mit Zitat

Lust zu lesen? grinsen

Siehe PN: HF


MfG
TPM
_________________
[ WebFBC ][ OPS ][ ToOFlo ][ Wiemann.TV ]
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Build0815



Anmeldungsdatum: 30.09.2006
Beiträge: 51

BeitragVerfasst am: 26.02.2007, 13:25    Titel: Antworten mit Zitat

Hallo Eternal Pain,
wenn du schnell und einfach eine *.Wav Datei abspielen willst könntest du es so versuchen (habs in FB 0.17 geschrieben und getestet und Windows hat die Datei richtig abgespielt). :

Code:

Declare Function sndPlaySound Lib "winmm.dll" Alias "sndPlaySoundA" (ByVal lpszSoundName As String, ByVal uFlags As Long) As Long
Declare Function waveOutGetNumDevs Lib "winmm.dll" () As Long
Declare Function MessageBox Lib "user32" Alias "MessageBoxA" (ByVal hwnd As Long, ByVal lpText As String, ByVal lpCaption As String, ByVal wType As Long) As Long
'/\ Falls Fehler auftreten - MessageBox anzeigen ... /\

Const SND_SYNC = &h0 ' Sound synchron abspielen
Const SND_ASYNC = &h1 ' Sound asynchron abspielen
Const SND_NODEFAULT = &h2 ' Default (Kein Sound)
Const SND_MEMORY = &h4 '
Const SND_LOOP = &h8 ' Sound wiederholt abspielen bis zum nächsten Aufruf von sndPlaySound
Const SND_NOSTOP = &h10 ' Keine laufenden Sounds stoppen
Const SND_NOWAIT = &h2000 ' Nicht warten wenn der Treiber überlastet ist
Const SND_ALIAS = &h10000 ' Soundname ist ein Registry Alias
Const SND_ALIAS_ID = &h110000 ' Alias ist eine vordefinierte ID
Const SND_FILENAME = &h20000 ' Name ist Dateiname
Const SND_RESOURCE = &h40004

Dim tmp As Long
tmp = sndPlaySound("C:\Test.WAV", SND_ASYNC Or SND_NODEFAULT)
If tmp = 0 Then MessageBox(0, "Fehler: Wav-Datei konnte nicht geöffnet werden!", "Wav Test Programm", 16) : End
Sleep
End


PS: Herzlichen Dank an den ApiGuide für die Consts. grinsen
PPS: Eventuell musst du noch ein paar Zeilenumbrüche rückänging machen, weil der [Code] bereich wohl ein paar zu lange Zeilen abgeknickt hat. lächeln
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Eternal_pain



Anmeldungsdatum: 08.08.2006
Beiträge: 1783
Wohnort: BW/KA

BeitragVerfasst am: 26.02.2007, 13:49    Titel: Antworten mit Zitat

Danke, aber dabei ging es mir weniger dabei EINEN Sound abzuspielen sondern eher darum mehrerer Sounds abspielen zu KÖNNEN
Spielereinen mit MCISendString und sndPlaySound ect haben keine zufriedenen ergebnisse erbracht, der Stream ist zu langsam und lässt das Programm ruckeln und sndPlaySound ist zwar schnell, aber leider kann man immer nur einen Sound gleichzeitig abspielen....
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen MSN Messenger
Build0815



Anmeldungsdatum: 30.09.2006
Beiträge: 51

BeitragVerfasst am: 26.02.2007, 13:51    Titel: Antworten mit Zitat

Ich hab schnell ein MCI Beispiel vom vb@rchiv nach FB "übersetzt" (naja viel gabs nicht zu ändern grinsen), mit dem man mehrere Sounds gleichzeitig abspielen kann, vielleicht kannst dus ja doch gebrauchen.
(Mit FB 0.17 getestet)

Code:

Declare Function mciSendString Lib "winmm.dll" _
  Alias "mciSendStringA" (ByVal lpszCommand As String, _
  ByVal lpszReturnString As String, _
  ByVal cchReturnLength As Long, _
  ByVal hwndCallback As Long) As Long
 
Declare Function GetShortPathName Lib "kernel32" _
  Alias "GetShortPathNameA" (ByVal lpszLongPath As String, _
  ByVal lpszShortPath As String, _
  ByVal cchBuffer As Long) As Long
 
  ' WAVE-File abspielen
Public Function WAVE_Play(ByVal sFile As String, _
  ByVal sAlias As String) As Byte
 
  Dim bResult As Byte
 
  ' Dateinamen in DOS 8.3 Format, da z.B. Sonderzeichen
  ' wie Leerzeichen Probleme machen
  Dim sBuffer As String
  Dim lResult As Long
 
  sBuffer = Space$(255)
  lResult = GetShortPathName(sFile, sBuffer, Len(sBuffer))
 
  If lResult <> 0 Then
    sFile = Left$(sBuffer, InStr(sBuffer, Chr$(0)) - 1)
 
    ' MCI öffnen
    If mciSendString("open " & sFile & _
      " type WaveAudio alias " & sAlias, 0, 0, 0) = 0 Then
 
      ' WAVE abspielen
      mciSendString "play " & sAlias & " from 0", 0, 0, 0
    End If
  End If
 
  WAVE_Play = bResult
End Function

WAVE_Play("C:\1.wav", "MyWAVE_1")
Sleep
WAVE_Play("C:\2.wav", "MyWAVE_2")
Sleep
End
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
ThePuppetMaster



Anmeldungsdatum: 18.02.2007
Beiträge: 1837
Wohnort: [JN58JR]

BeitragVerfasst am: 26.02.2007, 15:08    Titel: Antworten mit Zitat

Ich würde dennoch empfehlen, es mit DS zu machen. Aus dem einfachengrunde, da es dort mehr möglichkeiten gibt Soudns zu manipulieren. Es sei mal der Dopplereffekt erwähnt, der in einem guten Spiel nicht zu verachten sei.

Oder Richtungsgesteuert (3D), oder die effektivere Kontrolle der Sounds, das Mischen von Sounds, die Manipulation von Quellen und Objekten in einem, der Höhere Grad an Effiziens, durch eben DX.

Bei nem 2D game is allerdings mit MCI gut aus zu kommen, da man dann den ganzen schnickschnack nicht wirklich braucht., da es sich meist auf 3D bezieht. Gibt zwar auch sdinge für 2D, aber .. mei ..das is ansichtssache.


MfG
TPM
_________________
[ WebFBC ][ OPS ][ ToOFlo ][ Wiemann.TV ]
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Eternal_pain



Anmeldungsdatum: 08.08.2006
Beiträge: 1783
Wohnort: BW/KA

BeitragVerfasst am: 26.02.2007, 15:25    Titel: Antworten mit Zitat

Die sndSoundPlay und MCIsentString geschichten sind mir soweit vertraut, hab die auch alle schon ausprobiert....

das ergebniss war nicht sonderlich zufriedenstellend, wenn es mir nur darum gehen würde einen bzw mehrer Sounds abspielen zu können kann ich FMod benutzen...

Mir geht es darum die Stream-Funktionen von WinMM (Waveout) und DSound für eine ganz einfache eigene API zu nutzen weil ich gern mein eigenes Ding für meine klein Spiele hätte.

mit MCISendString kann man zwar mehrere Sound gleichzeitig abspielen aber bei einem Kleinen spiel wo ich das getestet hab, hat es immer gestockt... wie gesat sndPlanySound, nur ein Sound gleichzeitig... bleiben nur noch die DSound und WaveOut funktionen oder direkte aber veraltete DMA ausgabe....
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen MSN Messenger
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Windows-spezifische Fragen Alle Zeiten sind GMT + 1 Stunde
Gehe zu Seite 1, 2  Weiter
Seite 1 von 2

 
Gehe zu:  
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.

 Impressum :: Datenschutz