title image


Smiley Musik abspielen mit C++ .NET (PlaySound() )
Hallo zusammen,



ich versuche derzeit in meine Anwendung in MS VC++ .NET mit der Funktion PlaySound() Hintergrundmusik einzubauen und habe mich auch schon auf zahlreichen Seiten schlau gemacht, aber es funktioniert trotzdem nicht.

Wenn ich PlaySound im normalen Quellcode im .cpp meiner Datei einfuege, dann funktioniert es auch. Da ich es aber in .NET mit einer grafischen Benutzeroberflaeche programmieren will, muss ich es doch auch irgendwie in meiner Headerdatei .h in die Klasse, die schon von .NET vorgegeben ist, einbinden koennen, was mir allerdings nicht gelingt.

Ich habe einen Button eingefuegt, auf dessen Betaetigen die Musik einfach beginnen soll zu spielen. Alles was ich an zusaetzlichem Code (nur 3 Zeilen fuer die Funktion PlaySound) eingefuegt habe, habe ich im Kommentar gekennzeichnet, der Rest war schon von VC++ vorgegeben, da ich ja eine Windows-Forms Anwendung mit .NET schreibe.



Meine .cpp Datei sieht derzeit so aus:





// Form1.cpp



#include "stdafx.h"

#include "Form1.h"

#include

#include // habe ich hinzugef¸gt



using namespace PlaySound_Test;



int APIENTRY _tWinMain(HINSTANCE hInstance,

HINSTANCE hPrevInstance,

LPTSTR lpCmdLine,

int nCmdShow)

{

System::Threading::Thread::CurrentThread->ApartmentState = System::Threading::ApartmentState::STA;

Application::Run(new Form1());

return 0;

}

Code:

#include "stdafx.h"

#include "Form1.h"

#include

#include // habe ich hinzugef¸gt



using namespace PlaySound_Test;



int APIENTRY _tWinMain(HINSTANCE hInstance,

HINSTANCE hPrevInstance,

LPTSTR lpCmdLine,

int nCmdShow)

{

System::Threading::Thread::CurrentThread->ApartmentState = System::Threading::ApartmentState::STA;

Application::Run(new Form1());

return 0;

}







Meine .h Datei so:





// Form1.h



#pragma once

#pragma comment(lib,"winmm.lib") // habe ich hinzugef¸gt



namespace PlaySound_Test

{

using namespace System;

using namespace System::ComponentModel;

using namespace System::Collections;

using namespace System::Windows::Forms;

using namespace System::Data;

using namespace System::Drawing;



public __gc class Form1 : public System::Windows::Forms::Form

{

public:

Form1(void)

{

InitializeComponent();

}



protected:

void Dispose(Boolean disposing)

{

if (disposing && components)

{

components->Dispose();

}

__super::Dispose(disposing);

}

private: System::Windows::Forms::Button * button;



private:

///

/// Erforderliche Designervariable.

///

System::ComponentModel::Container * components;



///

/// Erforderliche Methode f¸r die Designerunterst¸tzung.

/// Der Inhalt der Methode darf nicht mit dem Code-Editor ge‰ndert werden.

///

void InitializeComponent(void)

{

this->button = new System::Windows::Forms::Button();

this->SuspendLayout();

//

// button

//

this->button->Location = System::Drawing::Point(128, 120);

this->button->Name = S"button";

this->button->Size = System::Drawing::Size(320, 152);

this->button->TabIndex = 0;

this->button->Text = S"button";

this->button->Click += new System::EventHandler(this, button_Click);

//

// Form1

//

this->AutoScaleBaseSize = System::Drawing::Size(5, 13);

this->ClientSize = System::Drawing::Size(656, 446);

this->Controls->Add(this->button);

this->Name = S"Form1";

this->Text = S"Form1";

this->Load += new System::EventHandler(this, Form1_Load);

this->ResumeLayout(false);



}

private: System::Void Form1_Load(System::Object * sender, System::EventArgs * e)

{

}



private: System::Void button_Click(System::Object * sender, System::EventArgs * e)

{

PlaySound("coward.wav", NULL, SND_FILENAME | SND_ASYNC); // habe ich hinzugef¸gt



}



};

}

// Ende Form1.cpp





// Form1.h



#pragma once

#pragma comment(lib,"winmm.lib") // habe ich hinzugef¸gt



namespace PlaySound_Test

{

using namespace System;

using namespace System::ComponentModel;

using namespace System::Collections;

using namespace System::Windows::Forms;

using namespace System::Data;

using namespace System::Drawing;



public __gc class Form1 : public System::Windows::Forms::Form

{

public:

Form1(void)

{

InitializeComponent();

}



protected:

void Dispose(Boolean disposing)

{

if (disposing && components)

{

components->Dispose();

}

__super::Dispose(disposing);

}

private: System::Windows::Forms::Button * button;



private:

///

/// Erforderliche Designervariable.

///

System::ComponentModel::Container * components;



///

/// Erforderliche Methode f¸r die Designerunterst¸tzung.

/// Der Inhalt der Methode darf nicht mit dem Code-Editor ge‰ndert werden.

///

void InitializeComponent(void)

{

this->button = new System::Windows::Forms::Button();

this->SuspendLayout();

//

// button

//

this->button->Location = System::Drawing::Point(128, 120);

this->button->Name = S"button";

this->button->Size = System::Drawing::Size(320, 152);

this->button->TabIndex = 0;

this->button->Text = S"button";

this->button->Click += new System::EventHandler(this, button_Click);

//

// Form1

//

this->AutoScaleBaseSize = System::Drawing::Size(5, 13);

this->ClientSize = System::Drawing::Size(656, 446);

this->Controls->Add(this->button);

this->Name = S"Form1";

this->Text = S"Form1";

this->Load += new System::EventHandler(this, Form1_Load);

this->ResumeLayout(false);



}

private: System::Void Form1_Load(System::Object * sender, System::EventArgs * e)

{

}



private: System::Void button_Click(System::Object * sender, System::EventArgs * e)

{

PlaySound("coward.wav", NULL, SND_FILENAME | SND_ASYNC); // habe ich hinzugef¸gt



}



};

}



// Ende Form1.h



Wie man hier sieht habe ich insgesamt nur 3 Zeilen Code eingefuegt, wenn ich es nun kompiliere, sagt mir mein VC++, dass es die Funktion PlaySound() auch mit einer argumentbezogenen Suche nicht finden konnte. Ebenso kennt es SND_FILENAME und SND_ASYNC nicht. Die winmm.lib Bibliothek habe ich auch schon verlinkt. Was mache ich denn noch falsch? Bitte helft mir!



Vielen Dank fuer eure Mithilfe schon im Voraus,



Fabian



P.S.: Wenn hier niemand mit PlaySound() zu helfen weiss, vielleicht habt ihr ja noch andere Vorschlaege wie ich Hintergrundmusik in C++ .NET realisieren kann. Vielen Dank.

geschrieben von

Login

E-Mail:
  

Passwort:
  

Beitrag anfügen

Symbol:
 
 
 
 
 
 
 
 
 
 
 
 
 

Überschrift: