Multithreading - aber wie?



  • ...da hab ich mich wohl verklickt ... sorry



  • Dieser Thread wurde von Moderator/in Jochen Kalmbach aus dem Forum C++/CLI mit .NET in das Forum WinAPI verschoben.

    Im Zweifelsfall bitte auch folgende Hinweise beachten:
    C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?

    Dieses Posting wurde automatisch erzeugt.



  • unsigned __stdcall thread1(void* param)
    {
    	// ..
    	return 0;
    }
    
    // ...
    
    _beginthreadex(0, 0, thread1, 0, 0, 0);
    


  • Du solltest dir mal den letzen Parameter von Playsound (SND_ASYNC) anschauen, also ich mach das immer so

    void Play_SoundFile(char *filename){
    
    	PlaySound(filename, NULL, SND_ASYNC | SND_FILENAME | SND_NODEFAULT);
    }
    


  • Danke ... das wars.



  • Es hat sich leider noch ein Problem aufgetan:

    Um das oben ganannte Problem zu lösen habe ich eine Headerdatei "SOUNDS.h" erstellt und darin die Thread Funktion Sound wie folgt definiert:

    #pragma once
    #include "stdafx.h"
    
    /*** Sound abspielen ***/
    unsigned int __clrcall sound(void *sounddatei)
    		{
    			PlaySound(TEXT("C:\\Users\\Jens\\Desktop\\Downloads\\C++ lernen\\Sounds\\ping.wav"), NULL, SND_FILENAME);
    
    			return 0;
    		}
    

    Aufgerufen wird diese Funktion als Event einer Form::

    _beginthreadex(0, 0, sound, 0, 0, 0);
    

    Bis hierhin klappt das alles. Nun wurde mir gesagt, dass man keine Funktionen in Headerdateien definieren solle. Also versuchte ich diese Funktion in die Form1.h zu integrieren - so wie es eigentlich hätte sein sollen.

    Nur wie stelle ich das an? Versuche ich diese Funktion in die Klasse Form1 zu integrieren - erhalte ich wieder folgenden Fehler:

    error C3867: 'IPSender::Form1::sound': function call missing argument list; use '&IPSender::Form1::sound' to create a pointer to member
    

    Der Prototyp der Funktion lautet immer noch:

    unsigned int __clrcall sound(void *sounddatei);
    

    Hat das was mit dem __clrcall zu tun? Leider werde ich aus der Hilfe nicht wirklich schlau...



  • oje.



  • wie ich diese Kommentare hasse ... Chaos pur?



  • Was hat die an meiner fertigen Funktion, die auch noch lauffähig ist nicht gepasst? Naja wie auch immer so gehtz:

    headerdatei.h

    void Play_SoundFile(char *filename);
    

    eine_c_datei.c

    void Play_SoundFile(char *filename){
    
        PlaySound(filename, NULL, SND_ASYNC | SND_FILENAME | SND_NODEFAULT);
    }
    

    Diese Headerdatei in jede *.c Datei includieren, die die Soundfunktion benötigt. Ich empfehle dir mal dein Grundlagenwissen aufzupolieren. Lad dir halt mal irgendwelche Sourcecodes aus dem Netz und schau dir an wie andere das machen.



  • Du hast ja recht. Aufpolieren wäre hier aber schwierig - ich bin mitten drin, beim Lernen. Mache das aus Spaß und habe eben nicht all zu viel Vorwissen. Versuche mich aber an dem ein oder anderen Projekt, da ich denke, dass der Lerneffekt hier viel größer ist.

    In der Schule etc. macht man ja nichts anderes. Fragen sollte hierbei schon erlaubt sein ...


Anmelden zum Antworten