How to create a sound from a VC++ .NET program

  • Thread starter Thread starter Kueishiong Tu
  • Start date Start date
K

Kueishiong Tu

I want to create a sound to alert the user when some event occurs.
How do I do it from my VC++ .NET window form program?
 
I want to create a sound to alert the user when some event occurs.
How do I do it from my VC++ .NET window form program?

MessageBeep would probably be the easiest API to use. If you need a
more complex facility, have a look at the PlaySound API. For the .Net
world, it looks like similar facilities are available from the
System.Media namespace - SystemSound::Play for instance.

Dave
 
Dear Dave:

I use the following code to call MessageBeep from my VC++ .net window form
program

[DllImport("user32.dll", SetLastError=true)]
static bool MessageBeep(UINT type);

MessageBeep(-1);

However I do not hear a beep sound.

Also I do not see the System::Media namespace in my Visual Studio 2003 .NET.

Kueishiong Tu
 
I use the following code to call MessageBeep from my VC++ .net window form
program

[DllImport("user32.dll", SetLastError=true)]
static bool MessageBeep(UINT type);

You don't need to go to that rigmarole - this is C++ not C# :)

Just #include said:
MessageBeep(-1);

Try MessageBeep(MB_OK) - it should produce whatever system sound you
have set up in the Control Panel Sound setting.
Also I do not see the System::Media namespace in my Visual Studio 2003 .NET.

I don't have VS2003 installed, but the following works for me with
VS2008:

#include "stdafx.h"
#include<windows.h>

#pragma comment( lib, "User32.lib" )

using namespace System;

int main(array<System::String ^> ^args)
{
Console::WriteLine(L"Hello World");
MessageBeep( -1 );

System::Media::SystemSounds::Beep->Play();
return 0;
}

Dave
 
Dear Dave:

David Lowndes said:
I use the following code to call MessageBeep from my VC++ .net window form
program

[DllImport("user32.dll", SetLastError=true)]
static bool MessageBeep(UINT type);

You don't need to go to that rigmarole - this is C++ not C# :)

Just #include<windows.h> and add the call to the API.

If I don't do the DllImport, the IDE will complain unresolved token
"MessageBeep" when I try to build the solution in VS2003 VC++ .NET.
I don't have VS2003 installed, but the following works for me with
VS2008:

#include "stdafx.h"
#include<windows.h>

#pragma comment( lib, "User32.lib" )

using namespace System;

int main(array<System::String ^> ^args)
{
Console::WriteLine(L"Hello World");
MessageBeep( -1 );

System::Media::SystemSounds::Beep->Play();
return 0;
}

I try the same code on my VS2008 VC++ express, but I still get no sound even
I turn the speaker to the loudest level and my window media player does play
sound.

Kueishiong Tu
 
I don't have VS2003 installed, but the following works for me with
I try the same code on my VS2008 VC++ express, but I still get no sound even
I turn the speaker to the loudest level and my window media player does play
sound.

If you use the Control Panel, Sound applet and play the default beep
from there, does that work?

Dave
 
If you use the Control Panel, Sound applet and play the default beep
from there, does that work?

Dave

It does not initially. I fix it. Now it works fine. Thank you very much for
your help.

Kueishiong Tu
 
Back
Top