?
Ich versuche derzeit meine Anwendung mit der Funktion PlaySound() in MS VC++ .NET zu realisieren und habe mich auch schon auf zahlreichen Seiten schlau gemacht, aber es funktioniert trotzdem nicht. Wenn 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 meine Headerdatei .h einbinden koennen, was mir allerdings nicht gelingt.
Ich habe einen Button eingefuegt, auf dessen Betaetigen die Musik einfach zu spielen anfangen soll. Alles was ich 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 <windows.h>
#include <mmsystem.h> // 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:
/// <summary>
/// Erforderliche Designervariable.
/// </summary>
System::ComponentModel::Container * components;
/// <summary>
/// Erforderliche Methode f¸r die Designerunterst¸tzung.
/// Der Inhalt der Methode darf nicht mit dem Code-Editor ge‰ndert werden.
/// </summary>
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
}
};
}
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