失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > 控制PC喇叭发声

控制PC喇叭发声

时间:2023-11-29 14:40:16

相关推荐

控制PC喇叭发声

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喇叭发声》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。