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

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?
 
D

David Lowndes

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
 
K

Kueishiong Tu

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
 
D

David Lowndes

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
 
K

Kueishiong Tu

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
 
D

David Lowndes

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
 
K

Kueishiong Tu

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
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Top