要生成音乐,当然最开始的肯定是从蜂鸣器发生开始了。

MSDN中是这样定义的

BOOL WINAPI Beep(

_In_ DWORD dwFreq,

_In_ DWORD dwDuration

);

前面第一个频率,第二个是持续时间(毫秒)

使用Visual Studio 2019,点击“按钮2”可听到声音,音调高低,时间长短不同。

代码如下:

// WindowsProject1.cpp : 定义应用程序的入口点。

//

#include "framework.h"

#include "WindowsProject1.h"

#include

using namespace std;

#define MAX_LOADSTRING 100

#define IDB_ONE 3301 //按钮1

#define IDB_TWO 3302 //按钮2

// 全局变量:

HINSTANCE hInst; // 当前实例

WCHAR szTitle[MAX_LOADSTRING]; // 标题栏文本

WCHAR szWindowClass[MAX_LOADSTRING]; // 主窗口类名

// 此代码模块中包含的函数的前向声明:

ATOM MyRegisterClass(HINSTANCE hInstance);

BOOL InitInstance(HINSTANCE, int);

LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);

INT_PTR CALLBACK About(HWND, UINT, WPARAM, LPARAM);

int APIENTRY wWinMain(_In_ HINSTANCE hInstance,

_In_opt_ HINSTANCE hPrevInstance,

_In_ LPWSTR lpCmdLine,

_In_ int nCmdShow)

{

UNREFERENCED_PARAMETER(hPrevInstance);

UNREFERENCED_PARAMETER(lpCmdLine);

// TODO: 在此处放置代码。

// 初始化全局字符串

LoadStringW(hInstance, IDS_APP_TITLE, szTitle, MAX_LOADSTRING);

LoadStringW(hInstance, IDC_WINDOWSPROJECT1, szWindowClass, MAX_LOADSTRING);

MyRegisterClass(hInstance);

// 执行应用程序初始化:

if (!InitInstance (hInstance, nCmdShow))

{

return FALSE;

}

HACCEL hAccelTable = LoadAccelerators(hInstance, MAKEINTRESOURCE(IDC_WINDOWSPROJECT1));

MSG msg;

// 主消息循环:

while (GetMessage(&msg, nullptr, 0, 0))

{

if (!TranslateAccelerator(msg.hwnd, hAccelTable, &msg))

{

TranslateMessage(&msg);

DispatchMessage(&msg);

}

}

return (int) msg.wParam;

}

//

// 函数: MyRegisterClass()

//

// 目标: 注册窗口类。

//

ATOM MyRegisterClass(HINSTANCE hInstance)

{

WNDCLASSEXW wcex;

wcex.cbSize = sizeof(WNDCLASSEX);

wcex.style = CS_HREDRAW | CS_VREDRAW;

wcex.lpfnWndProc = WndProc;

wcex.cbClsExtra = 0;

wcex.cbWndExtra = 0;

wcex.hInstance = hInstance;

wcex.hIcon = LoadIcon(hInstance, MAKEINTRESOURCE(IDI_WINDOWSPROJECT1));

wcex.hCursor = LoadCursor(nullptr, IDC_ARROW);

wcex.hbrBackground = (HBRUSH)(COLOR_WINDOW+1);

wcex.lpszMenuName = MAKEINTRESOURCEW(IDC_WINDOWSPROJECT1);

wcex.lpszClassName = szWindowClass;

wcex.hIconSm = LoadIcon(wcex.hInstance, MAKEINTRESOURCE(IDI_SMALL));

return RegisterClassExW(&wcex);

}

//

// 函数: InitInstance(HINSTANCE, int)

//

// 目标: 保存实例句柄并创建主窗口

//

// 注释:

//

// 在此函数中,我们在全局变量中保存实例句柄并

// 创建和显示主程序窗口。

//

BOOL InitInstance(HINSTANCE hInstance, int nCmdShow)

{

hInst = hInstance; // 将实例句柄存储在全局变量中

HWND hWnd = CreateWindowW(szWindowClass, szTitle, WS_OVERLAPPEDWINDOW,

CW_USEDEFAULT, 0, CW_USEDEFAULT, 0, nullptr, nullptr, hInstance, nullptr);

if (!hWnd)

{

return FALSE;

}

ShowWindow(hWnd, nCmdShow);

UpdateWindow(hWnd);

return TRUE;

}

//

// 函数: WndProc(HWND, UINT, WPARAM, LPARAM)

//

// 目标: 处理主窗口的消息。

//

// WM_COMMAND - 处理应用程序菜单

// WM_PAINT - 绘制主窗口

// WM_DESTROY - 发送退出消息并返回

//

//

LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)

{

HINSTANCE hg_app;

switch (message)

{

case WM_CREATE:

{

CreateWindow(TEXT("BUTTON"), TEXT("HoverTree"), WS_CHILD | WS_VISIBLE | BS_PUSHBUTTON,

30, 30, 200, 100, hWnd, (HMENU)IDB_ONE, hInst, 0);

ShowWindow(hWnd, SW_SHOWNORMAL);

CreateWindow(TEXT("BUTTON"), TEXT("按钮2"), WS_VISIBLE | WS_CHILD | BS_PUSHBUTTON,

35, 150, 120, 60, hWnd, (HMENU)IDB_TWO, hInst, NULL);

}

break;

case WM_COMMAND:

{

int wmId = LOWORD(wParam);

// 分析菜单选择:

switch (wmId)

{

case IDB_ONE:

MessageBox(NULL, TEXT("内容 Hello world!"), TEXT("标题 Hovertree"), MB_OK);

break;

case IDB_TWO: {

Beep(750, 500);

Beep(800, 300);

Beep(900, 900);

Beep(1000, 300);

Beep(1100, 100);

Beep(1200, 500);

Beep(1300, 2000);

}

break;

case IDM_ABOUT:

DialogBox(hInst, MAKEINTRESOURCE(IDD_ABOUTBOX), hWnd, About);

break;

case IDM_EXIT:

DestroyWindow(hWnd);

break;

default:

return DefWindowProc(hWnd, message, wParam, lParam);

}

}

break;

case WM_PAINT:

{

PAINTSTRUCT ps;

HDC hdc = BeginPaint(hWnd, &ps);

// TODO: 在此处添加使用 hdc 的任何绘图代码...

EndPaint(hWnd, &ps);

}

break;

case WM_DESTROY:

PostQuitMessage(0);

break;

default:

return DefWindowProc(hWnd, message, wParam, lParam);

}

return 0;

}

// “关于”框的消息处理程序。

INT_PTR CALLBACK About(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)

{

UNREFERENCED_PARAMETER(lParam);

switch (message)

{

case WM_INITDIALOG:

return (INT_PTR)TRUE;

case WM_COMMAND:

if (LOWORD(wParam) == IDOK || LOWORD(wParam) == IDCANCEL)

{

EndDialog(hDlg, LOWORD(wParam));

return (INT_PTR)TRUE;

}

break;

}

return (INT_PTR)FALSE;

}

其中framework.h代码如下:

// header.h: 标准系统包含文件的包含文件,

// 或特定于项目的包含文件

//

#pragma once

#include "targetver.h"

#define WIN32_LEAN_AND_MEAN // 从 Windows 头文件中排除极少使用的内容

// Windows 头文件

#include

// C 运行时头文件

#include

#include

#include

#include

php如何调用声音beep,使用C++播放Beep声,可调节音高相关推荐

  1. C#调用声音函数(PlaySound,Beep,MessageBeep等)

    [转载]C#调用声音函数(PlaySound,Beep,MessageBeep等) <一>Visual Basic Beep() 1.使用Visual Basic Beep函数:添加引用 ...

  2. Android多媒体学习五:调用Android自带的播放器播放Audio

    Android有其自带的播放器,我们可以使用隐式Intent来调用它:通过传入一个Action为ACTION_VIEW同时,指定Data为所要播放的Audio的Uri对象,并指定格式信息,则我们就可以 ...

  3. Android中调用系统已安装的播放器来播放网络流媒体视频

    2019独角兽企业重金招聘Python工程师标准>>> 实现思路比较简单几行代码就可以搞定,在界面放一个Button或者带有播放图标的imageview,点击事件中调用本地播放器来播 ...

  4. 声音文件慢速播放不变调原理的猜想

    一.先看一个简化问题: 假设有一声音波音f(t) = sin(2t),那么1/2速播放,等同于将时间t乘以系数1/2,将会变成f(t * 1 / 2) = sin(2t * 1 /  2)= sin( ...

  5. uni-app 声音/震动提示,播放系统默认消息声音 安卓(Android)测试通过

    uni-app 声音/震动提示,播放系统默认消息声音 安卓(Android)测试通过 可以跟据自己需求使用,有不足的地方希望大家帮忙补充 参数 type Options vibrate:震动 othr ...

  6. 在计算机硬件中谁完成声音的获取与播放,初中信息技术上册《声音的获取与加工》教学.ppt...

    <初中信息技术上册<声音的获取与加工>教学.ppt>由会员分享,可在线阅读,更多相关<初中信息技术上册<声音的获取与加工>教学.ppt(20页珍藏版)> ...

  7. EasyDSS如何通过API接口调用指定时间段的录像播放视频?

    互联网视频云服务EasyDSS可支持视频直播.点播,在视频直播上最多可分为十六屏进行实时直播:在视频点播上则有视频点播广场便于用户自由点播,视频能力及灵活性非常强大,可满足用户的多场景需求. 为了便于 ...

  8. linux beep,软响铃 ── 把 beep 换成音乐

    很多人千方百计想关掉控制台(或 X 终端模拟器)的嘀嘀声.我觉得有提示音不一定是坏事,但是那个嘀嘀声听起来的确有点烦人.而且在我的 irssi 中那个 beep 提示音实在是太小声了(而且也不好听). ...

  9. 【阴沟翻船】AVPlayer设置完毕马上调用play方法会导致播放没声音

    注意:必须要KVO监听playItem的status,监听AVPlayerStatusReadyToPlay时再调用play方法,不论是远程的还是本地 NSURL *url = [[NSBundle ...

最新文章

  1. element ui只输入数字校验
  2. 入门NLP最优解:从项目实践轻松入手!
  3. 海南大学2020年申请考核博士研究生招生工作办法
  4. viewpager 无网络的时候滑动异常
  5. 网络营销外包——网络营销外包专员如何帮助企业挑选网站建设类型
  6. 用javascript实现自动隐藏页面字段
  7. 企业使用RTX腾讯通2013
  8. 阿里道延:我对技术架构的理解与架构师角色的思考
  9. Android下强制打开键盘
  10. java三次登录锁定_Java基础知识点有哪些 如何快速步入Java行业
  11. 问题 J: A+B Problem (II) : Input/Output Practice 山东科技大学OJ C语言
  12. 测试开发Python培训:抓取新浪微博抓取数据-技术篇
  13. (CSS3)CSS3- 最常用的属性(一)
  14. bzoj 3357: [Usaco2004]等差数列(DP+map)
  15. Docker实践 -- 安装Docker
  16. java webservice接口开发实例_Webservice 接口开发简单例子
  17. win10键盘锁住了怎么解决
  18. auto semicolon insertion 自动分号补齐的坑
  19. 百度语音合成离线使用研究
  20. USB TO I2C(上海同旺电子)调试器调试LM75A--TI

热门文章

  1. 从零开始学习机器学习五:决策树算法特征工程
  2. 以json格式输出 bro(zeek)日志
  3. 微信境外支付php_PHP实现 APP端微信支付功能
  4. 畅想未来计算机英语作文带翻译,my future英语作文带翻译
  5. elasticsearch-analysis-dynamic-synonym同义词插件实现热更
  6. 小数乘法的C语言,小数乘法 5
  7. 独家 | 流媒体服务中的诈骗检测
  8. 2030零售品牌未来的数字化技术战略
  9. 英文姓名 格式 结构
  10. 教育最大的失败,是普通家庭富养孩子