GDI VC++重绘控件做的音乐播放器

VC++音频采集与处理实战:WASAPI、MFC与信号处理全解析 音频信号处理是多媒体开发与实时系统交互的核心技术之一,其本质是将连续的模拟声音信号通过采样、量化转换为数字信号,再通过算法进行分析与变换。其原理基于数字信号处理理论,通过时域与频域转换实现声音的解析与重构。在工程实践中,这项技术对于实现低延迟、高保真的音频应用具有关键价值,广泛应用于语音识别、音乐制作、实时通信及嵌入式系统等领域。本文聚焦Windows平台,深入探讨如何利用WASAPI进行高效音频采集,并结合MFC框架实现实时波形图显示。通过解析环形缓冲区设计与双缓冲绘图等关键技术,详细阐述了音频数据从采集 阅读详情

用GDI重绘控件做的播放器。播放MP3格式的音乐。音乐部分用MCI接口。控件部分进行了自绘。



源码暂时在优化。还有小功能没完善。比如歌曲列表歌曲的存储。不用没关闭打开一次就要添加一次。比如歌词同步显示。还有播放模式还没做。就只有顺序播放模式。

等功能完善源码优化后。在年后放出代码。谢谢大家支持。放出程序。大家可以先看看小样。

开发语言VC++/MFC 开发环境VS2010 全程序没有使用一个dll文件。自绘部分依靠高仿qq界面部分源码。和自己重绘三个控件源码。

大概用到的响应函数

#pragma once
#include "DlgBase.h"
#include "Vocal.h"
// MusicPlayer 对话框

class CMusicPlayer : public CDlgBase
{
	//DECLARE_DYNAMIC(MusicPlayer)

public:
	CMusicPlayer(CWnd* pParent = NULL);   // 标准构造函数
	//virtual ~MusicPlayer();

// 对话框数据
	enum { IDD = IDD_WavPlayer };

protected:
	HICON m_hIcon;
	virtual void DoDataExchange(CDataExchange* pDX);    // DDX/DDV 支持
	DECLARE_MESSAGE_MAP()
	afx_msg LRESULT OnVoiceThumbMove(WPARAM wParam, LPARAM lParam);  //声音滑块移动消息响应函数
	afx_msg LRESULT OnPlay(WPARAM wParam, LPARAM lParam);            //播放消息函数
	afx_msg LRESULT AddVocal(WPARAM wParam, LPARAM lParam);          //添加歌曲消息函数
	afx_msg LRESULT OnDown(WPARAM wParam, LPARAM lParam);            //歌曲列表换页下消息函数
	afx_msg LRESULT OnUp(WPARAM wParam, LPARAM lParam);              //歌曲列表换页上消息函数
	afx_msg LRESULT OnDelete(WPARAM wParam, LPARAM lParam);          //歌曲列表删除歌曲消息函数
	afx_msg LRESULT OnNext(WPARAM wParam, LPARAM lParam);            //歌曲下一首消息函数
	afx_msg LRESULT OnPre(WPARAM wParam, LPARAM lParam);             //歌曲上一首消息函数
public:
	afx_msg void OnTimer(UINT_PTR nIDEvent);
	virtual BOOL OnInitDialog();
	virtual void InitUI(CRect rcClient);
	virtual void OnSize(CRect rcClient);
	afx_msg void OnMouseMove(UINT nFlags, CPoint point); //鼠标事件
	virtual BOOL PreTranslateMessage(MSG* pMsg);         //键盘事件
	unsigned long GetVocalTime(CString s);               //获取歌曲总长度
	void PlayVocal();                                    //播放歌曲函数
	void ResumeVocal();                                  //暂停歌曲函数
	void StopVocal();                                    //停止歌曲函数
	void WaitVocal();                                    //挂起歌曲函数
	DWORD getinfo(DWORD item);                           //获取歌曲状态函数
	void SetVocalVol(DWORD vol);                         //调节歌曲音量函数
public:
	//---------------slider控件相关--------------
	CPoint oldP,oldP2;
	bool isDown;
	CRect vbr,r1,r2,vbr2,pr1,pr2; 
	int min,max,pmin,pmax;
	//------------------------------------------

	bool isPlay;
	CArray<Vocal,Vocal>m_VocalArray; //歌曲容器
	int ListCount;   //歌曲数量
	int realPage;
	int col;
	int vpage;

	//-------------MCI播放相关-----------------
	DWORD cdto,cdfrom,cdlen,m_count;
	bool isResume;
	CString playPath;
	int PlayID;
	int vocalID;
	int minute,second,hour;
	int tlen;//时间长度
	//--------------------------------------
	
	
};

自定义部分控件

//控件
#define           ST_TIMEM              2016
#define           ST_TIMES              2017
#define           ST_NAME               2018
#define           ST_PlAYLIST           2001 //播放列表  STATICTEST 静态文本控件
#define           BT_PLAY               2002 //播放按钮  BUTTON 控件
#define           BT_PRE                2003
#define           BT_STOP               2004
#define           BT_DELETE             2005
#define           BT_NEXT               2006
#define           BT_VOICE              2007
#define           BT_ADD                2008
#define           BT_LINE1              2009
#define           BT_THUMB1             2010
#define           BT_THUMB2             2011
#define           BT_UP                 2012
#define           BT_DOWN               2013
#define           BT_ONLINE             2014
#define           BT_SELECT             2015


下载地址:点击打开链接


Visual C++实战进阶:从开发环境配置到Windows核心编程 C++作为高性能系统编程的核心语言,其价值在于对底层硬件的直接控制和高效率执行。在Windows平台上,Visual C++开发环境提供了与操作系统深度集成的工具链,通过Visual Studio IDE和MSVC编译器,开发者能够构建从桌面应用到系统服务的各类程序。其技术价值体现在对Windows API的完整支持、优秀的运行时性能以及对历史代码的兼容性上,这使得它在游戏开发、工业控制、高性能计算等场景中不可替代。在实际工程中,开发者常面临microsoft visual c++ redistributa 阅读详情

相关推荐

MFC 之 CButton 控件重绘(GDI+篇)

在写完GDI篇后我以为会很快就能把GDI+篇弄出来。

茶余饭后 1万+

c语言vc下在如何播放音乐,VC程序播放音乐必备

使用MCI API,源文件中需要包含头文件 Mmsystem.h,在Project->Settings->Link->Object/libray module中加入库 Winmm.lib。 VS2008在源文件加上#include "mmsystem.h" #pragma comment(lib,"winmm.lib")1、MCI简介MCI(Media Control ...

weixin_39797780的博客 562

VC++实现音频录制与播放功能

本文还有配套的精品资源,点击获取 简介:本文详细介绍了如何利用VC++和Windows API开发音频录制与播放功能,涵盖了初始化输入输出设备、音频数据缓冲区管理、回调函数以及事件处理等方面的实现。通过构建类似于录音机的应用程序,展示了如何实现音频的录制、存储、播放和实时控制,同时指出了关键技术和用户体验的提升策略。 1. 音频录制与播放原理 1.1 声波的...

weixin_31139479的博客 1125

VC++中播放声音的方法

其中参数lpszSound是需要播放声音的.WAV文件的路径和文件名, hmod在这里为NULL,fuSound是播放声音的标志,详细说明请参考VC++中的帮助。说明:1)以上使用的音频设备和声音文件操作函数的声明包含在mmsystem.h头文件中,因此在程序中必须用#include "mmsystem.h"语句加入头文件。要实现作为资源的声音文件的播放,首先要在资源管理器中加入待播放的声音文件(实现过程并不复杂,这里不在叙述)。在VC++中可以根据不同的应用要求,用不同的方法实现声音的播放。

智光工作室 1898

基于Visual C++的音乐播放器源码解析与实战实现

通过对MCI命令的封装,我们获得了:✅职责分离:UI只负责交互,播放逻辑由专用类处理;✅易于扩展:未来替换为DirectShow或Media Foundation不影响现有代码;✅便于调试:统一的日志输出与错误处理机制;✅支持多实例:每个播放器拥有独立别名与状态;这不仅是代码整洁之道,更是工程化思维的体现。

weixin_35920379的博客 360

WinForm版播放器(支持多种文件类型,已经封装类方法,文件中放了个4.66M的歌曲,自身程序很简单)

WinForm版播放器(支持多种文件类型,已经封装类方法,文件中放了个4.66M的歌曲,自身程序很简单),不用vs自带的插件,速度更快。

VC在应用程序中播放声音文件

在VC中播放声音文件一共有两种方法:不要忘记,在文件开始加入:#include #pragma   comment(lib,"winmm.lib") 1.打开文件夹,选择音乐播放:(1)OnOpenFile()//在打开文件函数中,获取wav文件路径 CFileDialog pCFileDialog(true,NULL , NULL, 0, "wav文件(*.wav)|*.wav"); pCFil

Augusdi的专栏 2567

vc++实现波形音频播放器

用vc++实现录音,停止,保存,播放,波形显示,声道,位数,采样率,音频长

VC++ MFC自定义图像按钮开发:从Owner Draw原理到实战实现

在Windows桌面应用开发中,控件自定义绘制是提升用户体验的关键技术。Owner Draw机制允许开发者接管控件的绘制过程,通过重写DrawItem函数,结合GDI绘图技术,实现完全自定义的视觉效果。这一技术不仅解决了标准控件样式单一的问题,更在界面美化、状态反馈和交互体验优化方面具有重要价值,广泛应用于多媒体软件、游戏界面及专业工具开发。本文以VC++ MFC为开发环境,深入解析如何利用Owner Draw原理,结合位图资源加载、鼠标消息处理和双缓冲绘图等核心技术,实现一个支持多状态切换的自定义图像按钮

weixin_26850069的博客 359

vc多种控件重绘,美化界面!

vc多种控件重绘,美化界面!ListCtrl,对话框重绘皮肤,按钮,列表框重绘,菜单等!

CTreeCtrl控件重绘总汇

CTreeCtrl控件重绘总汇,内含八十多个源码

VC++实现Windows透明窗体:从SetWindowRgn到UpdateLayeredWindow实战

在Windows桌面应用开发中,窗体是用户交互的核心界面元素。其底层绘制原理基于Windows图形子系统(GDI/GDI+)和消息循环机制。通过控制窗体的绘制区域与像素合成,可以实现从简单的形状裁剪到复杂的半透明混合等多种视觉效果,这极大地提升了应用的专业感和用户体验。这项技术广泛应用于需要突出视觉表现或实现沉浸式交互的场景,例如音乐播放器、系统监控悬浮窗和各类设计软件的界面。本文将聚焦于使用VC++进行底层开发,深入解析如何通过SetWindowRgn实现不规则形状窗体,以及利用SetLayeredWin

weixin_33491377的博客 226

用VC++中的MFC编写的音乐播放器

本资源是用MFC开发音乐播放器的源码,当时的开发环境似乎VS2010

谈软件的开发环境,工具,知识点

谈软件的开发环境,工具,知识点 高度总结,以方便我们选择开发工具,清楚各种开发工具的特长 目前软件开发的动力源泉还是来自欧美国家,这可能是当代中国程序员们心中的一个没有完成的心愿! 特写此文,以帮助中国的程序员们一起提高,以献上本人的一份力量 写作目的: 让各位喜爱程序之人对程序开发领域有一个清晰的了解,从而专心于一个领域,能短时间得到成果 chinanetboy,chinayaosir //*...

移动互联网改变生活,高效配对交易创造财富 1万+

避坑指南:在Linux服务器上用Conda安装antiSMASH 5.2.0(解决Jinja2报错和Matplotlib权限问题)

本文详细介绍了在Linux服务器上使用Conda安装antiSMASH 5.2.0的避坑指南,重点解决了Jinja2报错和Matplotlib权限问题。通过创建专用conda环境、安装指定版本依赖包和配置缓存目录,帮助用户顺利完成antiSMASH的本地部署,适用于批量处理基因组分析任务。

weixin_26911099的博客 316

pgsql行列转换

‌是PostgreSQL中的一个函数,用于将一个字符串根据正则表达式进行分割,并将结果返回为一个表格,每个分割后的部分作为一行‌‌。string_agg() 函数是 PostgreSQL 中的一个聚合函数,用于将一个列中的值连接成一个字符串。

chimchim66的博客 3505

行业软件设计要点

各种软件设计环境工具知识点精讲它来自我原来的blog website: http://chinanetboy.bokee.comqq:44633197谈各种软件服务的开发环境,开发工具,开发知识点高度总结,以方便我们选择开发工具,清楚各种开发工具的特长目的:让各位喜爱程序之人对程序开发领域有一个清晰的了解,从而专心于一个领域,能短时间得到成果 chinanetboy 花费5个小时写作和整理//**

移动互联网改变生活,高效配对交易创造财富 4282

从零搭建ECG心电图仪:模拟前端电路设计与噪声对抗实战

在电子工程和生物医学信号处理领域,微弱信号的采集与放大是核心挑战。其基本原理在于利用高精度模拟电路,从强大的环境噪声中提取出有用的差分信号。这项技术的核心价值在于将理论上的传感器信号转化为稳定、可靠的可用数据,是连接物理世界与数字系统的关键桥梁。在医疗监护、工业传感和科学测量等场景中,高性能的模拟前端设计直接决定了整个系统的精度与可靠性。本文聚焦于生物电信号采集这一具体应用,深入探讨如何运用差分放大器、低通滤波器和陷波滤波器等经典模块,构建一个能够有效对抗工频干扰和接触噪声的实用电路,最终实现从人体体表清晰

weixin_30616969的博客 461

VC简单实现播放音乐

#define _CRT_SECURE_NO_WARNINGS #include &lt;string.h&gt; #include &lt;stdio.h&gt; #include &lt;windows.h&gt; #include &lt;Digitalv.h&gt; #include &lt;mmsystem.h&gt; #pragma comment(lib, "winmm.lib") ...

晚晴小筑 286

保姆级教程:在S32DS 3.4上安装S32K3xx RTD 4.4驱动包(附常见安装失败排查)

本文提供在S32DS 3.4上安装S32K3xx RTD 4.4驱动包的详细教程,涵盖环境准备、分步安装指南及常见问题排查。特别针对NXP S32K3系列MCU开发者,解决网络问题、路径配置等安装难点,并分享进阶配置技巧和最佳实践,助力高效开发。

weixin_42696271的博客 290

基于STM32设计的太阳能智慧路灯_444

本文设计并实现了一种基于 STM32 的太阳能智慧路灯系统。系统以 STM32F103C8T6 单片机为核心,集成温湿度检测、空气质量检测、环境光照检测、行人检测和路灯故障检测等功能,实现对路灯运行环境和工作状态的实时感知。

465

MCI编程之 mciSendCommand

使用MCI API,源文件中需要包含头文件 Mmsystem.h,在Project->Settings->Link->Object/libray module中加入库 Winmm.lib。 1、MCI简介   MCI(Media Control Interface,媒体控制接口)向Windows程序提供了在高层次上控制媒体设备接口的能力。程序不必关心具体设备,就可以对激光唱机(CD)、视盘机、波形

yuyuyu_713的专栏 2284

在 SAP BAS 中扩展标准 SAP Fiori 应用并部署到 ABAP 环境的完整实践指南

SAPUI5 Adaptation Project 摘要(148字) SAPUI5 Adaptation Project 提供了一种高效扩展标准Fiori应用的方式,通过创建应用变体(Application Variant)实现差异化定制。开发者可在SAP BAS中使用可视化编辑器修改UI元素(如隐藏字段、调整表格布局、添加按钮等),而无需重写业务逻辑。变体部署到ABAP环境后,可与标准应用并行使用,且能随原应用升级保持同步。典型应用场景包括为不同用户角色定制简化界面或增强特定功能,既满足个性化需求,又保留

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 186
上一篇: VC开发圣诞程序雪花飞舞的世界
下一篇: DGGame序-回归Blog重构自我
utral董东东
博客等级 码龄16年 158粉丝 33原创
评论 22
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值