控制PC喇叭发声
来源:互联网 发布:淘宝新店一个月没销量 编辑:程序博客网 时间:2024/05/17 02:50
PC喇叭发声就是需要控制硬件的声调和延时,让其发出对应的声音,可用来对外界产生测试声音源。注意:使PC喇叭发声是绕过声卡的,也就是说就算计算机上没有声卡,该操作也可完成。
(1)新建一个MFC对话框,并且安置七个按钮,分别表示声调的7个阶,每个按钮的操作函数如下:
void CSpeakerbeepDlg::OnOne()
{
Beep(264,500); //频率(单位赫兹),延时(单位毫秒)
}
void CSpeakerbeepDlg::OnTwo()
{
Beep(296,500);
}
void CSpeakerbeepDlg::OnThree()
{
Beep(330,500);
}
void CSpeakerbeepDlg::OnFour()
{
Beep(349,500);
}
void CSpeakerbeepDlg::OnFive()
{
Beep(392,500);
}
void CSpeakerbeepDlg::OnSix()
{
Beep(440,500);
}
void CSpeakerbeepDlg::OnSeven()
{
Beep(494,500);
}
以上按钮即可实现驱使PC喇叭发出音阶的声音
(2)如果还想利用PC小键盘上的数字键,快捷的控制PC喇叭发声。则需要用到处理PreTranslateMessage这个消息处理。在MFC中,PreTranslateMessage是虚函数,我们可以重载它来处理键盘和鼠标消息。该函数表示在消息处理(TranslateMessge()和DispatchMessage()等)前所作的操作,如果函数返回值为TRUE,那么消息处理即终止,不会调用TranslateMessge()和DispatchMessage()来翻译和分发消息给相应的窗口;若返回值为FALSE,才会调用翻译和分发消息函数。
在类向导中添加这个消息,然后开始该消息处理。如下:
BOOL CSpeakerbeepDlg::PreTranslateMessage(MSG* pMsg)
{
if (pMsg->message==WM_KEYDOWN && pMsg->wParam>VK_NUMPAD1)
{
this->OnOne(); //this指向当前应用程序指针
}
if (pMsg->message==WM_KEYDOWN && pMsg->wParam>VK_NUMPAD2)
{
this->OnTwo();
}
if (pMsg->message==WM_KEYDOWN && pMsg->wParam>VK_NUMPAD3)
{
this->OnThree();
}
if (pMsg->message==WM_KEYDOWN && pMsg->wParam>VK_NUMPAD4)
{
this->OnFour();
}
if (pMsg->message==WM_KEYDOWN && pMsg->wParam>VK_NUMPAD5)
{
this->OnFive();
}
if (pMsg->message==WM_KEYDOWN && pMsg->wParam>VK_NUMPAD6)
{
this->OnSix();
}
if (pMsg->message==WM_KEYDOWN && pMsg->wParam>VK_NUMPAD7)
{
this->OnSeven();
}
return CDialog::PreTranslateMessage(pMsg);
}
按不同的数字键,即可发出连续的音阶声,数字越大发出的音阶声越完整。
- 控制PC喇叭发声
- C#使Pc喇叭发声
- 调用bios喇叭发声
- 喇叭发声原理
- 喇叭发声原理
- 通过驱动使应用程序直接操作IO口,通过端口终止PC喇叭发声
- 用pc喇叭播放音乐
- 关掉闹心的 PC 喇叭
- 关掉闹心的 PC 喇叭
- C# 控制蜂鸣器发声
- beep 控制蜂鸣器发声
- C# 控制蜂鸣器发声
- C# 控制蜂鸣器发声
- [VB.NET]需要一个喇叭发声的音乐,请教
- 去掉终端中的PC喇叭响铃
- linux去掉终端中的PC喇叭响铃
- Ubuntu 12.04下使用PC喇叭Beep
- Ubuntu 12.04下使用PC喇叭Beep
- 指针 数据结构 函数
- List与Set的用法(转载)
- Foj 1881 三角形问题
- 使用mmap实现自己的PIPE
- struts2.1 标签 提示
- 控制PC喇叭发声
- 毕业后五年拉开距离的原因究竟在哪里?
- 我想当一个程序员
- effective c++ 第三版 读书笔记1
- The requested list key 'map' could not be resolved as a collection/array/map/enumeration/iterator type. Example: people or peopl
- Microsoft SQL Server 2008安装图解(Windows 7)
- 一些常用物理公式和AS3的结合应用(转的)
- 如何编写异常安全的C++代码
- C++的虚函数和多态