linux下C语言设计GTK

linux下C语言设计GTK
linux下C语言设计GTK

设计背景

GTK+简介

GTK+一开始是作为流行的GNU图像处理程序GIMP的一部分产生的,逐渐成为功能强大最受欢迎的工具包之一,因为变成了一个独立的项目。它是一个函数库,提供了一组已经制作好的被称为构件的组件,可以通过简单易懂的函数调用把这些组件和应用程序逻辑组合在一起,从而极大的简化了GUI的创建。

GTK+使用自由的LGPL许可证,它完全是用C语言编写的,绝大多数GTK也是用C语言编写的,也有许多语言绑定可以在C++,Python,PHP,Java中使用它。

GTK本身是建立在一组其它函数库上的,例如他需要Glib提供底层数据结构、类型、线程支持、事件循环和动态加载。

Glib和GObject提供了一组数据类型、函数和宏的标准替代集来进行内存管理和处理常见任务,从而实现跨平台开发,意味着GTK+能够可靠的移植到其他平台和体系结构上。

Glib还定义了一些方便的常量:

#define FALSE 0

#define TRUE !FALSE

这些附加的数据类型基本上是标准C语言数据类型的代替,以及用于确保跨平台字节长度不变。

●gint、guint、gchar、guchar、glong、gulong、gfloat和gdouble是标准C

语言数据类型的简单代替

●gpointer与(void *)同义

●gboolean 用于表示布尔类型的值,它事对int的一个包装

●gint8、guint8、gint16、guint16、gint32和guint32是保证字节长度的有

符合和无符号类型

尽管GTK+是完全用C语言编写的,但是它通过GObjiect库支持对象和面向对象编程,这个库通过宏来支持对象继承和多态。为了方便起见,所有构件创建函数都返回一个GtkWidget类型。

程序实现

要实现本次课程设计要求,首先考虑的是将图形界面和回调函数分开来实现,图形界面通过窗口、按钮、盒、文本框等GTK+构件即可实现,而回调函数应该分

开来考虑,可以用数字键回调函数、小数点回调函数、运算符回调函数、等号回调函数、记忆功能回调函数、退格键回调函数、键盘事件处理函数来实现,它们之间可以相互独立。

界面的构建

窗口的实现

我们可以通过GTK+ 来创建一个窗口:

#include

int main (int argc,char *argv[])

{

GtkWidger *window;

gtk_init(&argc,&argv);

window = gtk_window_new(GTK_WINDOW_TOPLEVEL);

gtk_window_set_default_size(GTK_WINDOW(window),250,300);

gtk_container_set_border_width(GTK_CONTAINER(window),10);

gtk_window_set_title(GTK_WINDOW(window),"计算器");

gtk_window_set_position(GTK_WINDOW(window),GTK_WIN_POS_CENTER);

g_signal_connect(G_OBJECT(window),"delete_event",G_CALLBACK(gtk_m ain_quit),NULL);

gtk_widger_show(window);

gtk_main();

return 0;

}

首先使用#include 来包含所必需的GTK+库和相关库的头文件,接着,声明window为一个指向GtkWidget的指针,必须在调用任何GTK+函数之前对其调用gtk_init函数进行初始化,将命令行参数argc和argv传递给它,给GTK+一个机会来解析它所需要的任何命令行参数。GtkWidget* gtk_window_new (GtkWindowType type)调用在内存中建立窗口,参数type根据窗口的目的有两种取值,GTK_WINDOW_TOPLEVELW为一个标准的有框架窗口,GTK_WINDOW_POPUP可以创建一个实用于对话框的无框架窗口,使得将窗口实际显示在屏幕之前,可以在它里面放置构件,通过gtk_window_set_title可以设置窗口的标题,通过gtk_widow_setdefault_size可视设置窗口的大小,通过gtk_window_set_border_with则可以设置边框大小,通过gtk_window_set_position可以设置窗口的初始位置,要实际显示窗口,则需要

调用gtk_widget_show;改函数只需一个GtkWidget指针,只需要将窗口的引用传给它。最后调用gtk_main,这个关键函数通过把控制权交给GTK+来启动交互过程,并且一直运行,直到gtk_main_quit才返回,它是GTK+的主事件循环,每一个GTK+程序都必须有,否则程序就没法运行,它在程序运行时等待来自外部用户发出的事件,如键盘事件鼠标移动等,GTK+将这些事件包装成信号,用户在根据信号的功能编写相应的回调函数来处理。代码最后返回FALSE,相当于整数0,使程序更具完整性和可读性。

按钮的实现

多数情况下,标签文本在GTK+编程中起到提示的作用,用gtk_label_new 函数可以直接创建一个便签文本,它的参数就是标签要显示的文本字符串,事实上创建带有标签的按钮时,按钮中就包含一个标签控件。用gtk_button_new 创建按钮后,就可以用gtk_box_pack_start函数排放到盒装容器中。

GTK+以信号和回调函数作为自己的事件和事件监听系统,非常容易使用,可用用函数指针来设置信号处理器。回调函数的原型通常为:

void a_callback_function(GtkWidget *widget, gpointer user_data);传递的第一个参数是指向发出信号的构件的指针,第二个参数是但你连接回掉函数是自己选择的一个任意指针,可用于任何目的。连接回调函数只需要调用g_signal_connect,并传递如下几个参数:构件、信号名、回调函数指针和你的任意指针:

gulong g_signal_connect(gpointer *object, const gchar *name, GCallback func, gpointer user_data);

连接回调函数没有任何限制,可以讲多个信号连接到同一个回调函数,也可以讲多个回调函数连接到同一信号。

GTK+通过容器构件这种灵活的布局系统来避免使用绝对坐标导致的GUI不一致,它可以用来在应用程序窗口中控制构件的布局,盒是一个不可见的的构件,它的工作就是包含其它的构件,并控制他们的布局,为了控制盒中的每个构件的大小,为他们指定的是规则而不是坐标,因为盒构件可以包含任何GtkWidget,而GtkBox本身就是一个GtkWidget,故可以嵌套盒构件创建复杂的布局。GtkBox有两个主要的子类,GtkHBox是一个单行的横向组装盒构件,GtkVBox是一个单列的的纵向组装盒构件,在创建盒构件时,需要指定两个参数,通过homogeneous和spacing来控制特定组装盒所有构件的布局,homogeneous是一个布尔值,如果被设置成TRUE,则强制盒中每个构件都占据相同大小的空间,而不管每个构件的大小,spacing则以像素为单位设置构件的间距。

一旦创建好组装盒之后,就可以使用下面的函数来添加构件:

void gtk_box_pack_start (GtkBox *box, GtkWidget *child, gboolean expand, gboolean fill, guint padding);

void gtk_box_pack_end (GtkBox *box, GtkWidget *child, gboolean expand , gboolean fill, guint padding);

其中第一个是向GtkBox的右边和底部增加构件,而gtk_box_pack_end则向左边和顶部增加构件。它们的参数控制组装盒中每个构件的间距和格式:GtkBox *box 将被填充的组装盒

GtkWidget *child 将放入组装盒的构件

gboolean expand 如果为TRUE,则这个构件将填充与其他改标志也被设为TRUE的构件共享的所有可用空间

gboolean fill 如果为TRUE,则这个构件将填满分配给它的空间,而不是将它作为围绕它的边缘填充

guint padding 围绕在构件周围的以像素为单位的填充

GtkButton能派生出很多按钮构件,他们有着丰富的功能,通过创建不同类型的按钮,并把它按照界面设计装入盒容器中,即可构建好所需要的界面。

输入框的实现

GtkEntry是一个单行文本输入构件,常用于输入简单的文本信息,可以通过相应的API调用来设置和读取输入的文本,设置允许的最大字符数,以及设置设置其他一些属性来控制文本的定位和选择。要获取GtkEntry的内容,可以调用gtk_entry_get_text函数,它将返回GtkEntry内部的一个const char指针,如果想修改这个文本或把它传给一个可能修改的函数,就必须使用像strcpy这样的函数来复制这个字符串。可以通过_set_text、_appen_end_text、_modift_text函数来手工设置或修改它的内容,这些函数都使用const指针作为参数。

采用一个纵向盒装容器和多个横向盒装容器设计,另外在单行输入控件的阅读方向属性上用gtk_widget_set_direction设定为GTK_TEXT_DIR_RTL,即从右到左,使此控件的数字显示器更像一个计算器的显示屏。

回调函数的实现

在程序中多次用到stdli.h和glib中将字符串转换为浮点数和将浮点数转换为字符串的转换函数。在键盘处理程序中,用到gdk/gdkkeysyms.h中键值的宏定义,字符处理中用到string.h相关函数,故应该在头文件中包含这三个函数。

数字键

0-9的功能是向计算器输入数字,通过记位和定位,最后显示出来,所以它

们的回调函数是同一个,只是传递的参数不同而已。当有数字键按下时,如果超过计算机所能计算的范围,则返回,否则则通过gtk_button_get_laber函数获取所按下的键的标签,并通过g_strcat函数将此字符串转换为浮点数保存起来,以便进行运算。具体实现代码如下:

void on_num_clicked (GtkButton *button,gpointer data)

{

const gchar *num;

gint i;

if(count == MAX_ENTRY_NUMBER) return;//够6位数则不能再输入

count++;

num = gtk_button_get_label(GTK_BUTTON(button));//取数

g_strlcat(number,num,100);//保存

if(first)

nn = strtod(number,NULL);//数一

else

mm = strtod(number,NULL);//数二

gtk_entry_set_text(GTK_ENTRY(entry),number);

}

小数点

小数点的回调函数是比较特殊的,因为它在一个数字中只能出现一次,再按的话则应该不起作用,小数点输入之后应该对所输入的数字进行处理,使之成为浮点数,并且让后续数字也转换为相应的浮点数。

void on_dot_clicked (GtkButton *button,gpointer data)

{ //当小数点按下时

if(have_result)

clear_all();//全部清楚

if(have_dot == FALSE)

{

have_dot = TRUE;

g_strlcat(number,".",100);

gtk_entry_set_text(GTK_ENTRY(entry),number);

}

//如果有小数点则不输出

}

运算符

此次设计的计算器只能实现加减乘除四种运算功能,这四个运算按钮用了同一个回调函数,根据传递的参数设定当前的计算方法。我们可以用s来表示即将进行的运算,s=0是无运算符,s=1表示加法运算,s=2表示减法运算,s=3表示乘法运算,s=4表示除法运算,通过获取点击的按钮,通过开关语句即可实现相关计算,比如当我们是按下“+”,产生一个gpointer data=1的信号,此时执行以下语句,即可把s设置为1,并在entry上输出“+”:

switch(GPOINTER_TO_INT(data))

{

case 1://"+"

s = 1;

gtk_entry_set_text(GTK_ENTRY(entry),"+");

break;

}

等号

按钮的回调函数是根据当前的运算进行相应的运算,并将计算结果输出到输出控件中。当调用等号按钮回调函数on_eq_clicked时,我们可以通过获取s 的值即可进行相应的运算,再把结果通过g_ascii_dtostr装换为字符串从entry输出,如下:

switch(s)

{

case 1:

nn=nn+mm;

break;

}

g_ascii_dtostr(result,100,nn);

gtk_entry_set_text(GTK_ENTRY(entry),result);

清除键

功能是清除所有标记并将它们设为默认。即把记位,两个操作数,运算符标示全部置为0,把是否首次输入,是否有结果输出,前一个操作是否为运算符全部置为FALSE。

退格键

每按一次,从最后输入往前删一次,如果前一个输入是运算符的话,只需将运算符标识s置为0,若前面没有过输入,则返回,若前面输入为数字的话则把记位自减,并通过gtk_entry_get_text(GTK_ENTRY(entry))函数得到前面输入的字符,再把最后一个字符删除即可,如下:

count--;

str_in=gtk_entry_get_text(GTK_ENTRY(entry));

for(i=0;str_in[i]!='\0';i++)

number[i]=str_in[i];

number[i-1]='\0';

键盘事件

键盘事件处理的回调函数原型是:

gboolean on_widget_key_press_event(GtkWidget *event, gpointer user_data)

其中on_widget_key_press_event 是回调函数的名称,第一个参数widget是信号源,即接收key_press_event的控件,第二个event参数的类型是GdkEventkey,其中成员keyval就是捕获的按键的键值,在回调函数里可以这样获得键值俄vent->keyval,再用switch语句对不同按键进行处理, 其中的键值定义在/usr/include/gtk-2.0/gdk/gdkkeysyms.h文件里。

gboolean on_key_press_event (GtkWidget *widget,GdkEventKey *event, gpointer data)

{

switch(event->keyval)

{

case GDK_1:

on_key_num_press(1);

break;

case GDK_2:

on_key_num_press(2);

break;

}

}

对编写好的程序进行编译,输入:

$ gcc calc.c -o calc `pkg-config –cflags –libs gtk+-2.o`

当用以下命令运行程序时,就会弹出界面:

$ ./calc

点击按钮或直接用键盘即可输入数字,点击MS即可对当前的数进行保存,以便进行记忆运算:

再输入一个数字,点击M-,就可计算出记忆下来的数以当前数的差:

心得体会

本次课程设计做的是基于GTK+图形库的计算机,虽然之前对于它一点都不了解,但却是兴趣十足,因为我们日常生活中所用到的软件基本都是图形界面的,所以很好奇,一切都是从头学起,经过两个星期的奋战,最终得以实现。在此次设计中,使用了C语言和GTK+图形库进行开发,最终成果可以在装有

GTK+运行环境的各种操作系统上运行,实现了标准型计算器上的四则运算功能,添加了捕捉键盘事件的功能,通过PC键盘的数字键盘也可以进行操作,此计算器还有存储功能,例如MS,M+,M-等等,实现了完整的标准型计算器的功能。

由于是首次尝试用图形库进行开发,过程中自然困难重重,好多东西都是从头学起,学习GTK+图形库的用法用了好多天,这样也让我学到了好多原来不懂的知识,比如键盘事件的处理等等,对C语言有了更深的理解。

从刚开始的一头雾水到后来整个程序实现的过程中,遇到了很多问题,经过不断上网搜索和查阅相关资料,最终得以解决,这就教会只要肯动手,肯花功夫,问题就会得到解决,更重要的是,要善于使用身边的东西,要冷静思考不浮躁,看到别人做好了自己没搞定也不能气馁,要坚持,要相信自我,最终就会成果了。

在这两周里,薛老师作为指导老师一直陪伴着我们,不厌其烦为我解决了不少问题,提供了很多很好的建议,在此要特别感想。

参考文献

[1] Neil Matthew / Richard Stones.Linux程序设计[M]北京:人民邮电出边社,2010

[2]宋国伟.GTK+2.0编程范例[M]北京:清华大学出版社,2002

[3] Stephen Prata /云巅工作室. C Primer Plus[M]:北京:人民邮电出版社,2005

基于51单片机的音乐播放器

基于51单片机的音乐播放器 余子健、刘胤、宋亮 摘要:本大作业是基于sst89e52rd2单片机制作的wav音乐播放器。该播放器可以播放存在sd卡中的音乐,通过对sd卡的读取并将数字信号送入单片机中,借助8位DA转换器TLC5620 变成模拟信号,经过放大器TDA2822放大交给扬声器发出最初读取的音频信号,实现音乐播放的功能。 关键词:SD卡,WAV文件,DA,音频放大 1背景 音乐随身听产品经过几年的发展,已经变得相当成熟。市场上可以购买到各类不同的音乐播放器,产品线涵盖了高中低不同档次。作为学习与研究,本作品尝试利用STI51开发板板载资源以及外搭的功率放大电路制作一台音乐播放器,能够播放通过计算机拷贝在SD卡(或MMC卡、TF卡)的根目录中的某一个WAV 文件。 2硬件设计 该音乐播放器硬件组成如下 本音乐播放器使用容量为2G的SD作为外部存储器 主控制器采用SST公司生产的SST89E58RDA,其40引脚封装的芯片功能模块如图1所示。芯片主要特想如下: ?兼容80C51系列,内置超级FLASH存储器的单片机 ?工作电压VDD=4.5~5V,5V工作电压时0-40MHz频率范围 ?1KB的内部RAM ?两块超级FLASH EEPROM,32KB的基本存储卡和8KB的二级存储块(扇区大小为128字节),二级存储块可用于存放掉电后要保存的数据,放在内部具有极强的抗干扰性?最大片外程序/数据地址空间为64KB ?全双工增强型UART,帧错误检测,自动地址识别 ?9个中断源,4个中端优先级 ?降低EMI模式(通过AUXR SFR不允许ALE输出时钟),确保了单片机的高抗干扰性?双DPTR指针(查表,寻址更方便)

用MFC做MP3音乐播放器——超实用

第一步: 打开vc6.0,建立如图所示mfc工程文件 选择基于对话框的确定

删除所有空间,建立如图所示对话框 属性如下: 播放IDC_open; 添加IDC_fileopen; 暂停IDC_pause; 删除IDC_del; 停止IDC_stop; 退出IDC_exit; 音乐名编辑框IDC_filename; 音量控制滑块IDC_SLIDER1; 音量控制编辑框IDC_vol; 建立类向导对应如下:

在工程文件,右键,插入,bitmap位图 引入你想插入的背景图,必须是bmp格式的

进入你的dlg.cpp文件 在onpaint函数下添加代码void CMp3Dlg::OnPaint()

{ if (IsIconic()) { CPaintDC dc(this); // device context for painting SendMessage(WM_ICONERASEBKGND, (WPARAM) dc.GetSafeHdc(), 0); // Center icon in client rectangle int cxIcon = GetSystemMetrics(SM_CXICON); int cyIcon = GetSystemMetrics(SM_CYICON); CRect rect; GetClientRect(&rect); int x = (rect.Width() - cxIcon + 1) / 2; int y = (rect.Height() - cyIcon + 1) / 2; // Draw the icon dc.DrawIcon(x, y, m_hIcon); } else { //CDialog::OnPaint(); CPaintDC dc(this); CRect rect; GetClientRect(&rect); CDC dcMem; dcMem.CreateCompatibleDC(&dc); CBitmap bmpBackground; bmpBackground.LoadBitmap(IDB_BITMAP6); /IDB_BITMAP6是你的位图地址 BITMAP bitmap; bmpBackground.GetBitmap(&bitmap); CBitmap *pbmpOld=dcMem.SelectObject(&bmpBackground); dc.StretchBlt(0,0,rect.Width(),rect.Height(),&dcMem,0,0,bitmap.bmWidth,bitmap.bmHeight ,SRCCOPY); } } 编译运行,你就会看到背景有图片了。 插入-类,找到geneticclass,类名mp3.cpp

基于android的MP3音乐播放器任务书

毕业设计任务书 通信工程本科专业(08级) 题目:基于Android的MP3音乐播放器设计 学生姓名:武亚军班级:通信工程3班学号:08250315 指导教师:郑玉峰(校内),胡莉(校外) 一、设计目标和内容: 本文就是基于Android系统上的一款MP3音乐播放器应用程序的设计与实现。Android是一个开源的系统,它底层是基于Linux的操作系统,本设计的MP3音乐播放器采用了Android开源系统技术,利用Java语言和Eclipse 编辑工具对播放器进行编写。同时给出了详细的系统设计过程、部分界面图及主要功能运行流程图,该音乐播放器集播放、暂停、停止、快进、上一首、下一首、音量调节、歌词显示等功能于一体,能在Android系统中能独立运行。 二、设计基本要求: (1)完成MP3音乐播放器软件的需求分析,系统方案设计,选择软件开发工具,进行系统实施的全过程。 (2)完成毕业设计题目“基于Android的MP3音乐播放器设计”,进行需求分析,概要设计,详细设计,独立完成所承担的设计,测试,并能运行使用。 论文符合设计要求与规范,具有科学性、逻辑性。 (3)系统完整,术语准确,语言清晰,内容充实,论述全面,有文档设计的说明等。主要具体内容如下: 介绍本设计的开发工具、运行环境,重点介绍设计的需求分析、总体设计、详细设计及主要实现技术。 (4)论文(所需材料、上机、实验、外文翻译)要求: 对本软件设计应完成相应的文档,如:需求分析中大量的相关材料的查询,软件开发工作中大量开发工具的学习,详细设计中系统实现流程等。 三、设计进度安排: 1)2012.3.1-2012.3.9:阅读查找相关设计文献资料,完成英文翻译和文献 综述; 2)2012.3.10-2012.3.16:根据资料和以往的开发、研究经验进行实验步骤 的概括和整个工程进程的描述;

MP3智能音乐播放系统6区说明书(内页)

- 1 - ※系统概述: M P 3智能音乐播放系统:采用世界最先进的微电脑控制、M P 3、F L A S H 录音技术。将广播自动播放、音源选播、录音下载/音频和麦克风录音存储等先进功能综合为一体。高标准的产品定位,多功能的超前设计,成为广播设备的典范之精品,达到国内领先水平。广泛适用于校园自动广播音乐打铃、外语广播教学听力考试系统。 ※综合功能: M P 3自动广播、智能分区广播、日常教学广播、消防紧急广播、背景音乐播放、外语教学及听力考试广播功能。 ※技术参数: 信噪比:>90d B ; 总谐波失真:<0.1%; 频响范围:20H z -18K ; 电压:220V ※前面板介绍(由于机型不同布局略有不同) 01、安装紧固锣丝; 02、电源指示灯; 03、监听扬声器; 04、U S B 音乐下载; 05、菜单向左控制选择键; 06、菜单向上控制选择键; 07、菜单向右控制选择键; 08、进入菜单控制、确定键; 09、监听音量控制旋; 10、外接输入音量控制旋钮; 11、M P 3输出音量控制旋钮; 12、M I C 输出音量控制旋钮; 13、电源开关控制键; 14、菜单向下控制选择键; 15、退出菜单控制、取消键; ※液晶显示屏介绍 01、系统星期指示; 03、下一定时分区指示; 05、下一定时曲目指示; 02、下一定时时间指示; 04、系统时间指示; 06、当前运行程序指示; ※后面板介绍(由于机型不同布局略有不同)

2 注:(短路输入端囗: 当这个端囗有短路信号输入时,本机会立刻播放你放在內存里SP A 文件夹内的一首曲目,SP A 这文件夹內只能放一首要紧急报警用的歌曲,其它需要定时播放的歌曲要放在SPA 文件夹外面,如歌曲的路径放错则定时播放将不执行。短路输出端囗: 这个端囗与功放电源和分区的动作同步,即当有定时点到时,这端囗即短路,当定时歌曲放完即断开,这端囗作用是用于控制电源时序器接多台功放之用。 ※设备连接图(由于机型不同布局略有不同) ※键盘锁 01、天线; 03、mic 孔; 05、分区接线座; 07、220v 电源接线座; 02、音频输入输出插孔; 04、短路输入输出紧急报警接口; 06、电源输出接线座;

mp3音乐播放器c语言版

需求分析 1引言 随着社会的快速发展,现今社会生活紧张,而欣赏音乐是其中最好的舒缓压力的方式之一,音乐成了我们生活工作中的一个重要的部分。而计算机的普及,让人们能让我们通过播放软件,能更好的听到我们喜欢的音乐。本文档就是为了能更好的设计出一个音乐播放去而编写的。 1.1编写目的: 为明确软件需求、安排项目与进度、组织软件开发与测试,撰写本文档。本文档功项目经理、设计人员、开发人员参考。 1.2项目背景项目背景项目背景项目背景 本项目由老师提出,由学生自主开发,实现播放现今主流的音乐MP3,wma文本格式。 开发软件名称:音乐播放器 项目开发者:岳世崇 1.3项目目的和目标 本项目的目的是开发一个可以播放主流的音乐文本格式,本设计的实现主要功能是播放MP3,wma 格式的音乐文件,并且能控制播放,暂停,停止,音量控制,选择上一曲,选择下一曲,各种播放模式,视觉外观,列表文件等多种播放控制,界面简明,操作简单。 1.4参考资料 百度文库,mci接口调用方法

c语言程序设计——清华大学出版社 c数据结构——清华大学出版社。 2.系统需求分析 根据项目,我们可以获得项目系统的基本需求,一下从不同角度来描述系统的需求。 2.1功能需求 系统的功能需求,我们分成三部分来概括,即播放器的基本控制需求,播放列表管理需求和播放器友好性需求。以下分别描述: 一:播放器的基本控制需求 (1)播放:选择歌曲进行播放。 (2)暂停:输入暂停对应的选项,播放暂停。 (3)继续播放:输入继续播放对应的选项,实现继续播放。 (4)停止播放:输入停止播放对应的选项,实现停止播放。 (5)音量控制:输入音量控制所对应的选项实现音量控制。 (6)上一首,下一首:输入上一首或者下一首对应的选项实现歌曲的切换。 (7)播放模式:列表循环播放,列表顺序播放,随机播放,单曲循环播放,单曲播放的选项,选择播放模式。 (8)删除歌曲:删除列表中不想出现的歌曲 (9)快进/快退:输入相应的选项进入快进和快退功能并实现。 (10)查看文件大小:输入查看文件的大小对应的选项,实现查看文件大小的功能 (11)列表之间的相互切换,可以选择不同路径下的不同播放列表 。 二:播放列表管理 1.添加歌曲:添加歌曲的时候可以在本播放列表下进行添加,也可以选择输入播放列

MP3音乐播放器软件课程设计报告(MFC)

课程设计说明书 课程设计名称:软件综合课程设计 课程设计题目:音频播放器程序的设计与实现学院名称:信息工程学院

电子信息工程专业课程设计任务书 正文: 目录 引言 (5) 一、设计程序的目的与要求 (6)

目的 (6) 要求 (6) 二、方案实现与调试 (6) 总体设计 (6) 1、实现功能 (6) 2、功能模块图 (7) 详细设计 (7) 1、界面布局 (7) 2、各模块功能设计 (8) 2.1处理“打开”按钮 (9) 2.2处理“播放”按钮 (9) 2.3处理“暂停”按钮 (9) 2.4处理“停止”按钮 (9) 2.5处理“音量”按钮 (10) 2.6处理“退出”按钮 (10) 3 操作步骤 (10) 三、课程设计分析与总结 (11) 分析 (11) 总结 (11) 附录 (13) 关键程序清单 (13)

参考文献 (20) 引言 MP3播放器的设计是利用MFC应用程序、媒体控制接口MIC 的基本知识而设计的。 1.1 MFC简介 MFC是Visual C++是核心。MFC类库将所有图形用户界面的元素如窗口、菜单和按钮等都以类的形式进行了封装,MFC AppWizard 向导根据继承性利用MFC派生出自己的类,并对Windows应用程序进行了分解,利用MFC派生类对应用程序重新进行组装,同时还规定了应用程序中各个MFC派生类对象之间的相互联系,实现了标准Windows应用程序的功能,这就是向导生成的所谓MFC应用程序框架。每个MFC类都包括了一些函数,函数放到类中,符合C++编程方法。这些函数,必须通过类定义对象才能使用[1]。 1.2 MCI简介 MCI(Media Control Interface)媒体控制接口是MircroSoft提供的一组多媒体设备和文件的标准接口,它的好处是可以方便地控制绝大多数多媒体设备包括音频、视频、影碟、录像等多媒体设备,而不

手把手教您用MFC做MP3音乐播放器

打开vc6.0,建立如图所示mfc工程文件 选择基于对话框的确定 删除所有空间,建立如图所示对话框

属性如下: 播放IDC_open; 添加IDC_fileopen; 暂停IDC_pause; 删除IDC_del; 停止IDC_stop; 退出IDC_exit; 音乐名编辑框IDC_filename;音量控制滑块IDC_SLIDER1;音量控制编辑框IDC_vol; 建立类向导对应如下:

在工程文件,右键,插入,bitmap位图 引入你想插入的背景图,必须是bmp格式的 进入你的dlg.cpp文件

在onpaint函数下添加代码 void CMp3Dlg::OnPaint() { if (IsIconic()) { CPaintDC dc(this); // device context for painting SendMessage(WM_ICONERASEBKGND, (WPARAM) dc.GetSafeHdc(), 0); // Center icon in client rectangle int cxIcon = GetSystemMetrics(SM_CXICON); int cyIcon = GetSystemMetrics(SM_CYICON); CRect rect; GetClientRect(&rect); int x = (rect.Width() - cxIcon + 1) / 2; int y = (rect.Height() - cyIcon + 1) / 2; // Draw the icon dc.DrawIcon(x, y, m_hIcon);

控制台C语言编写音乐播放器主要功能

#include "" #include"" #include<> #include<> #include<> #include"" #include"" #pragma comment(lib,"") #include "" #include"" #include"" #include "" int Order=1; D); printf(" %-20s ",info[i].song); printf(" %-10s\n",info[i].singer); printf(" -------------------------------------------------------\n"); } void Play() { if(NewOrder!=0) Order=Amount+1; char vol[10]="500"; char v[40]; char ch[200]; sprintf(ch,"open \"%s\" alias aa",info[Order-1].add); sprintf(v," setaudio aa volume to %s",vol); mciSendString(ch,NULL,0,NULL); mciSendString(v,NULL,0,NULL); mciSendString("play aa repeat",NULL,0,NULL); dd); mciSendString(ch,NULL,0,NULL); mciSendString(v,NULL,0,NULL); mciSendString("play aa ",NULL,0,NULL); dd); mciSendString(ch,NULL,0,NULL); mciSendString(v,NULL,0,NULL); mciSendString("play aa ",NULL,0,NULL); dd); mciSendString(ch,NULL,0,NULL);

MP3音乐播放器课程设计

Java程序设计 课程设计说明书 简单音乐播放器 起止日期:2011年12月6日至2012年1月4日 学生姓名XXX 班级软件工程093班学号09408300310 成绩 指导教师 计算机与通信学院 2011年12 月28日

目录 一、绪论 (1) 1.1 课题背景 (1) 1.2 课程设计目的 (1) 1.4 课程设计实验环境 (1) 1.5 课程设计要求 (1) 二、课程系统分析 (3) 2.1 系统分析 (3) 2.1 功能分析 (3) 三、系统设计 (4) 3.1 系统功能结构图 (4) 3.2 模块功能设计 (4) 3.2.1处理“添加”按钮 (4) 3.2.2处理“播放”按钮 (4) 3.2.3 处理“停止”按钮 (4) 3.2.4 处理“单曲循环”按钮 (5) 四、系统实现 (6) 4.1 系统主界面的实现 (6) 4.2 系统主要功能实现 (6) 4.2.1系统主界面及关键代码: (6) 4.2.2添加文件的界面和代码: (9) 4.2.3 播放音乐的界面和代码: (11) 4.2.4 单曲循环的界面和代码: (12) 五、设计总结 (15) 5.1 设计体会及评价 (15) 参考文献 (16) 致谢 (17)

一、绪论 1.1 课题背景 随着社会电子音乐文件的与日俱增,作为现在最流行的音乐文件*.mp3,*.wav文件的数量和规模也在比以往的任何时候要多,不论是电台DJ需要使用方便而有效地管理自己所使用的音乐文件,还是个人。在计算机日益普及的今天,若采用一套有效的音乐播放器。将自己所收藏的大量的音乐文件能随时随地的播放,这将方便于众用户听音乐的需求。通过使用本音乐播放器能为音乐爱好者带来意想不到的收获。 1.2 课程设计目的 《JAVA程序设计》是计算机相关专业的必修专业基础课程,其实践性、应用性很强。实践教学环节是必不可少的一个重要环节。本课程的程序设计专题实际是计算机相关专业学生学习完《JAVA程序设计》课程后,进行的一次全面的综合训练,JAVA程序设计的设计目的是加深对理论教学内容的理解和掌握,使学生较系统地掌握程序设计及其在网络开发中的广泛应用,基本方法及技巧,为学生综合运用所学知识,利用软件工程为基础进行软件开发、并在实践应用方面打下一定基础。 1.4 课程设计实验环境 程序运行在安装有windows操作系统的计算机上(台式机和笔记本),兼容windows 2K/XP/Vista/7 计算机硬件要求: 1.CPU:1G; 2.内存:512M. ; 3.显卡:256M显存; 文件播放:需要安装有声卡、要求安装有语音库。 JA VA程序设计语言及相应的集成开发环境,J2SDK和ECLIPSE开发工具。 1.5 课程设计要求 按课程设计指导书提供的课题,要求学生在自行完成各个操作环节,并能实现且达到举一反三的目的,完成一个项目解决一类问题。要求学生能够全面、深入理解和熟练掌握所学内容,并能够用其分析、设计和解答类似问题;对此能够较好地理解和掌握,能够进行简单分析和判断;能编写出具有良好风格的程序;

基于51单片机的音乐播放器设计

基于51单片机的音乐播放器设计 基于51单片机的音乐播放器设计 【摘要】本音乐播放器是利用STC89C51单片机结合内部定时系统及数码管显示,设计一个简易的微电脑音乐盒。本文分析了基于51单片机的音乐播放器的硬件电路和软件的设计的具体过程,包括数据处理子程序的设计、显示子程序的设计,最后针对仿真过程及结果进行了具体的分析与说明。 【关键词】单片机音乐播放器 一、前言 单片机又称单片微控制器,它不是完成某一逻辑功能的芯片,而是把一个计算机系统集成到一个芯片上,相当于一个微型的计算机,和计算机相比,单片机只缺少了I/O设备。概括的讲:一块芯片就成了一台计算机。单片机具有体积小、功耗低、控制功能强、扩展灵活、微型化和使用方便等优点,广泛应用于仪器仪表中,结合不同类型的传感器,可实现诸如电压、功率、频率、湿度、温度、流量、速度、厚度、角度、长度、硬度、元素、压力等物理量的测量。采用单片机控制使得仪器仪表数字化、智能化、微型化,且功能比起采用电子或数字电路更加强大。目前单片机渗透到我们生活的各个领域,几乎很难找到哪个领域没有单片机的踪迹。导弹的导航装置,飞机上各种仪表的控制,计算机的网络通讯与数据传输,工业自动化过程的实时控制和数据处理,广泛使用的各种智能IC卡,民用豪华轿车的安全保障系统,录像机、摄像机、全自动洗衣机的控制,以及程控玩具、电子宠物等等,这些都离不开单片机。 利用单片机实现音乐播放有很多优点,例如外部电路简单,控制方便、成本低等。本文分析了基于51单片机的音乐播放器的硬件电路和软件的设计的具体过程,运用89C51单片机定时器产生固定频率的方波信号,驱动喇叭发出旋律,按下按键可以演奏预先设置的歌曲旋律,最重要的是还可以通过程序设计输入特定 歌曲来演奏。

Android简易音乐播放器的设计与实现

本科生毕业设计(论文) ( 2016 届) 设计(论文)题目 Android手机APP开发——音乐播放器作者刘晗 系、专业计算机科学与技术 班级1201 指导教师(职称)王李冬(副教授) 论文字数8000 论文完成时间2016年 4月10 日 杭州师范大学钱江学院教学部制

Android手机APP开发——音乐播放器 计算机科学与技术1201 刘晗指导教师王李冬 摘要:Android手机的APP开发越来越受到人们的关注。现今社会人们生活压力越来越大,人们更注重精神的需求。人们需要放松,需要释放,需要发泄,而音乐则是调节人们心情的一个有效资源。本文基于Androidstudio开发了一款面向Android手机的音乐播放器。该播放器包含本地音乐扫描、歌词匹配、音乐播放以及用户管理等功能。该APP具备界面优美、使用方便等优点,满足现金市场上的应用需求。 关键词:移动互联;Android;音乐播放器 APP Development on Android Mobile Phone- Music Player Computer Science and Technology class 1201 Liu Han Instructor: Wang Lidong Abstract: Android APP development has attracted more and more nowadays. Living pressure of modern society people is more and more serious, which made people pay more attention to mental demand. People need to relax, to release, need to vent, and the music is an effective resources to adjust mood for people . This article develops an Android music player based on Androidstudio. The player includes local music scan, matching lyrics, music playing and user management, and other functions. The APP has beautiful interface, convenient use, and meet the application requirements of cash in the market. Key words:Mobile Internet; Android.;Music player

基于单片机控制的MP3音乐播放器的设计

目录 1引言 (1) 2硬件设计 (2) 2.1硬件电路的设计框图 (2) 2.2硬件电路设计模块的选定 (2) 2.2.1中心模块 (2) 2.2.2播放模块 (3) 2.2.3显示模块 (4) 2.2.4电子琴模块 (4) 2.3各硬件电路的具体设计 (5) 2.3.1 AT89S52控制模块的设计 (5) 2.3.2按键模块的设计 (6) 2.3.3扬声器播放模块的设计 (7) 2.3.4 LCD显示电路的设计 (7) 2.3.5彩灯伴奏电路的设计 (8) 3软件设计 (9) 3.1单片机发声的基本原理 (9) 3.2设计的相关音乐说明 (9) 3.3切换原理 (10) 3.4音乐播放器软件程序设计 (10) 3.4.1按键扫描子程序设计 (10) 3.4.2 1ms延时程序设计 (14) 3.4.3 LCD显示子程序设计 (15) 3.4.4函数初始化子程序设计 (16) 3.4.5系统主程序设计 (17) 4结论 (19) 参考文献 (20)

附录一硬件原理图 (21) 附录二软件主程序 (22) 致谢 (32)

摘要 目前流行的MP3播放器的音质已相当好,但略感遗憾的是除了选择歌曲和显示歌名外,绝大部分播放器没有诸如随意弹奏乐曲、乐曲节奏跳动等功能。而随着人们生活水平的不断提高,单片机控制无疑是人们追求的目标之一。要为现代人工作、生活提供更好的更方便的服务就需要从单片机技术着手,一切向着数字化控制、智能化控制方向发展。 本设计是采用单片机为核心设计的数字音乐播放器。本设计在实现音乐的播放及歌曲名显示等基本功能的基础上进行了扩展,添加了彩灯伴奏、按键弹奏、显示音乐节拍等功能。 本论文给出了系统方案的建立、硬件电路的详细设计及软件的程序实现。并通过软硬件的联立调试,验证了设计方案的可行性。 关键词:多功能;MP3音乐播放器;单片机;按键弹奏

控制台C语言编写音乐播放器主要功能

#include "FM_Main.h" #include"CTL.H" #include #include #include #include"GUI.h" #include"ERR_CheckEnter.h" #pragma comment(lib,"winmm.lib") #include "FM_CheckFile.c" #include"FM_Choose.c" #include"FM_List.c" #include "FM_Path.c" int Order=1; //初始时为第一首歌,随音乐切换而切换--nextsong() int NewOrder=0; int Amount = 0; //歌曲总量 int begin; //自定义列表中开始序号 int circulatemode=1; //循环模式 int pp=0; int begintemp=0; //存储自定义列表边界 int ww=-1; // 显示自定义列表当前播放信息 int upordown=1; //判断切歌方向 int firstup=0; int originvolume=500; //默认音量为500 char v[40]="setaudio aa volume to 500"; //初始化音量 void Init() { Order=1; NewOrder=0; Amount = 0; circulatemode=1; pp=0; begintemp=0; ww=-1; upordown=1; firstup=0; originvolume=500; } void ShowFileList() { if(begintemp==0) begintemp=begin; Amount = FM_CheckFile();

audio音乐播放器代码

无标题页



歌曲列表:

各种音乐播放器的比较

音乐播放器的评测 现在播放器实在是多了点,有的新手觉得眼花缭乱,不知道选什么,今天就来个点评,给大家些参考。 一、普通播放器 1:Windows Media Player(系统自带版本) 这个是非常常用的播放器,一般网吧、课室都用这个 优点:系统自带,无需安装。新版本是某些随身听播放器传输视频或者音频必须的软件。新版本在声音上有一定改善。 缺点:声音不好听!含糊不清。对各种格式支持非常不好!ape和flac这类牛B 哄哄的格式别指望能播放的了。打开速度慢,系统资源占用多,缺点太多,就不一一赘述了。 音质指数:C 实用指数:C 2:搜狗音乐盒、酷我音乐盒、QQ音乐、青苹果音乐播放器、酷狗音乐 这些都是网络播放器,主要功能是让大家能在播放器内直接选择最新最流行的音乐试听 优点:内置音乐排行榜,点选热门歌曲直接播放。 缺点:声音质量差,不支持无损格式,转换,修改文件信息等功能缺乏,只适合做试听之用。 音质指数:D 实用指数:D 3:千千静听 非常大众化的一个播放软件

优点:使用方便,修改和编辑文件信息效率高,对各种格式的支持和转换都很好,界面也丰富多彩。官方版本自带歌词速配,非常适合想偷懒又想看歌词的人。声音还算过得去。软件还算小巧,占用小。 缺点:千千的声音对追求音质的人来说太过马虎,特别突出的问题是对DTS文件的播放,出来的效果可以用非常差来形容。默认的配置使用了均衡器(两边高中间低),可以说是扭曲了声音。 音质指数:B+ 实用指数:A 4:暴风Winamp 曾经风靡一时的播放器 优点:界面华丽(默认皮肤来算,如果会弄的话,很多播放器的皮肤都可以很炫),播放mp3声音还不错。功能随着版本更新越来越多。 缺点:新版本不支持ape,flac的播放,需要找插件(麻烦)。随着版本不断更新,软件越来越臃肿,无用功能太多。 音质指数:B+ 实用指数:B 5:jetaudio 能歌善舞的播放器 优点:这个是iAUDIO开发出来的播放器,可以播放视频,有录音功能,是个功能比较多的播放器,并且界面华丽。声音方面,和iAUDIO随身听采用同一风格的调音,中频稍微凹一下去一点。但是整体声音还是很不错的。 缺点:支持ape,但是不支持CUE(囧rz)。界面为英文,软件比较臃肿。 音质指数:A 实用指数:B- 6:airplay

(完整版)基于STM32MP3播放器设计

基于STM32 MP3播放器设计

学院:XXXXXXXXXXX 专业班机:XXXXXXXX 姓名XXXXX 学号:XXXXXXXX

1.1 本课题的提出及意义 MP3音频播放器的最合理工作速度为30Mips,而一个典型的视频媒体播放器的理想速度则为175Mips,所以提高MP3的工作速度,以及改善MP3的音质是最关键的,也是亟待解决的问题。 MP3是一种典型的嵌入式设备,而现在市场上比较常见的是闪存式MP3。由于闪存式MP3的容量限制,使它存储歌曲数目较少,在功能上也很难实现多样化[1]。而硬盘式MP3的多功能及大容量,也必将受到不少消费者的喜爱。 MP3播放器一般分成3个部分:CPU、MP3硬件解码器存储器。其中可以将前两部分集成在一起,即带MP3硬件解码器的CPU;或将后两部分集成在一起,即集成硬件解码、D/A转换及音频输入。存储器可以是Flash存储器或硬盘[2]。通过用MP3编码技术,可以得到大约12:1压缩的有损音乐信号。 1.2 研究现状 MP3全称是MPEG Layer 3,狭义的讲就是以MPEG Layer 3标准压缩编码的一种音频文件格式。自韩国世韩(Seahan)公司1998年推出世界上第一台MP3随身听以来,MP3播放器以其小巧的外形,不错的近乎于CD的音质,前卫的功能,越来越受到消费者的青睐,也就成为业界甚至大众媒体关注的一个热门话题[3]。在市场消费刺激下,各大公司纷纷推出了自己的mp3播放器产品,IC供应商提供了众多的MP3解码芯片及其解决方案。除了Micronas方案(MAS3507+DAC3550),还有台湾创品方案(T33510,T33520)、美国SigmaTel方案(STMP3400)和TI的DA-250解决方案。这使mp3播放器的研制与生产变得更加容易,成本也大大降低,市场更加广阔[4]。

用51单片机播放音乐(附C程序)

用51单片机IO口播放几首音乐(附C程序) 以下为51单片机播放音乐简谱的函数库: /*说明************************************************************************ 曲谱存贮格式 unsigned char code MusicName{音高,音长,音高,音长...., 0,0}; 末尾:0,0 表示结束(Important) 音高由三位数字组成: ●个位是表示 1~7 这七个音符; ●十位是表示音符所在的音区:1-低音,2-中音,3-高音; ●百位表示这个音符是否要升半音: 0-不升,1-升半音。 音长最多由三位数字组成: ●个位表示音符的时值,其对应关系是: |数值(n): |0 |1 |2 |3 | 4 | 5 | 6 | 几分音符: |1 |2 |4 |8 |16 |32 |64 音符=2^n ; ●十位表示音符的演奏效果(0-2): 0-普通,1-连音,2-顿音; ●百位是符点位: 0-无符点,1-有符点。 调用演奏子程序的格式: Play(乐曲名,调号,升降八度,演奏速度); |乐曲名 : 要播放的乐曲指针,结尾以(0,0)结束; |调号(0-11) : 是指乐曲升多少个半音演奏; |升降八度(1-3) : 1:降八度, 2:不升不降, 3:升八度; |演奏速度(1-12000): 值越大速度越快; ***************************************************************************/ #ifndef __SOUNDPLAY_H_REVISION_FIRST__ #define __SOUNDPLAY_H_REVISION_FIRST__ #include //************************************************************************** #define SYSTEM_OSC 11059200//12000000 //定义晶振频率12000000HZ #define SOUND_SPACE 4/5 //定义普通音符演奏的长度分率,//每4分音符间隔 sbit BeepIO = P2^6; //定义输出管脚 unsigned int code FreTab[12] = { 262,277,294,311,330,349,369,392,415,440,466,494 }; //原始频率表 unsigned char code SignTab[7] = { 0,2,4,5,7,9,11 }; //1~7在频率表中的位置unsigned char code LengthTab[7]= { 1,2,4,8,16,32,64 }; unsigned char Sound_Temp_TH0,Sound_Temp_TL0; //音符定时器初值暂存 unsigned char Sound_Temp_TH1,Sound_Temp_TL1; //音长定时器初值暂存 //************************************************************************** void InitialSound(void) { BeepIO = 1; Sound_Temp_TH1 = (65535-(1/1200)*SYSTEM_OSC)/256; // 计算TL1应装入的初值 (10ms 的初装值)

C语言实现mp3设计文档

Mp3 音乐播放器设计文档 一、需求: 名称:mp3音乐播放器 目的:随时随地播放音乐、动画,查看文本文件 输入:一个电源开关,一个确定按钮,上、下按钮,USB接口 输出:液晶显示屏,耳机 功能:可以从PC上下载各种电脑文件,具有移动存储的功能; 能够识别并播放音乐文件,同步显示歌词,可以调节音效; 显示.txt文本文件; 性能:按钮刚按下即可刷新屏幕,所有操作在0.5秒内执行完毕 生产成本:低于100元 功耗:200mW 物理尺寸和重量:体积不大于5cm*3cm*1cm;重量轻于100g 二、规格说明 1、概要规格说明 系统的功能至少包括:接收从PC上下载的各类电脑文件并长久保存; 执行用户选择的操作; 列举所有音频文件,根据用户的选择播放任何一个文件,如有歌词则 显示歌词; 列举所有文本文件,根据用户选择显示任何一个; 用例图:

加电后的MP3执行过程: 操作系统加载完成后,处于监听状态,在用户选择完需要完成的动作后,由操作系统调用相关对象的方法来实现其功能。 2、详细规格说明: 所有的类及其成员变量、方法都归在类图之中

Translate类: 将数据转化成可以在LCD屏幕上显示的格式; Panel类: 管理在屏幕上显示的各个选项,可以高亮表示选择,需要保存所有显示的item;FileSystem类: 管理mp3中的所有可以识别的文件,可以读取、添加和删除文件; File类: 抽象类,各个文件类型必须继承该类; Music类: 表示音频文件类型,可以控制音频文件的播放、暂停、停止; TextFile类: 表示文本文件类型,可以显示文本文件; Lyric类 表示与音乐相关的歌词文件; Voice类: 管理音乐的声音大小、播放模式(如摇滚、古典、流行等) ChangeSignal类: 将音频文件转变成模拟信号,传输给耳机等外设。

C语言实现Mini-Cooledit音频播放器

多媒体实验报告 姓名:李浩日期:2013.6.21 作业一:Mini-Cooledit音频播放器 一、实验题目 Mini-Cooledit音频播放器 二、实验任务 编程实现一个具有GU I界面的音频播放控制小软件。 三、实验要求 从文件读取Wav音频文件 音频文件的播放、暂停、停止功能 从麦克风录音,并能存储成Wav文件 对录音进行播放、暂停、停止等功能 实现音频采样率与量化位数的转换(如44.1KHz, 16位转换成16KHz,8位) 音频波形的显示、时间轴显示的放大、缩小(选作) 音频语谱图的绘制与显示(选作) 四、设计原理及步骤 MCI ( Media Control Interface ) ,即媒体控制接口,向基于Windows操作系统的应用程序提供了高层次的控制媒体设备接口的能力。应用程序通过MCI发送相应的命令来控制媒体设备。 一条基于MCI的命令包含以下3个部分。 数据结构:该结构包含可传递给MCI驱动程序的信息和从驱动程序返回的值,指定要执行的MCI命令一个常量,如MCI_OPEN、MCI_CLOSE... 一个或一组用来指定MCI信息子选项的标志:这些标志用来确定可以得到什么类型的信息和如何执行函数。 一个确定命令附加参数:Windows MDK为使用命令消息接口发送MCI消息提供了3个核心函数。 1、mciSendCommand函数。该函数用于向MCI设备发送一个命令消息,原型为:MCIERROR mciSendCommand(MCIDEVICEID IDDevice, UINT uMsg, DWORD

fdwCommand, DWORD dwParam); 参数说明如下: IDDevice:用来表示一个MCI设备。MCI使用MCI_OPEN消息打开一个设备时自动创建一个标识号用以唯一标识要操作的设备,以后的命令操作均使用此标识。 uMsg:表示要发出的消息,取值如下所示。 MCI_OPEN 打开一个设备 MCI_CLOSE 关闭一个设备 MCI_PLAY 播放全部或部分音频,从暂停状态恢复播放 MCI_STOP 停止播放 MCI_PAUSE 暂停播放 MCI_SEEK 改变当前位置 MCI_CUE 提示一个设备以最小的延迟开始播放或录制 MCI_RECORD 在一个设备上开始录制 MCI_SA VE 保存一个文件 MCI_INFO 查询设备信息,如产品名称等 MCI_GETDEVCAPS 查询产品特征,如设备类型等 MCI_STA TUS 查询设备当前状态,如播放位置、媒体格式等 MCI_SET 设置设备参数,如时间格式、波形数据格式等 fdwCommand:消息指定标志。 dwParam:指定一个指向消息数据结构的指针。 如果mciSendCommand函数调用成功则返回0,否则返回错误代码消息。所返回的DWORD低位字是错误代码,可以将它发送到mciGetErrorString函数,已获得对错误的文本描述。若错误事设备特有的,高位包含了设备ID,否则高位为0。 MMSYSTEM.H头文件中还定义了MCI命令所需要的数据结构类型。以下是MCI命令常用的数据结构。 MCI_OPEN_PARMS MCI_OPEN命令消息参数的数据结构 MCI_PLAY_PARMS MCI_PLAY命令消息参数的数据结构 MCI_RECORD_PARMS MCI_RECORD命令消息参数的数据结构 2、mciGetDevicelID函数。当打开一个设备时,该函数用来获得此设备的ID,原型为:MCIDEVICEID mciGetDevicelID(LPCTSTR lpszDevice); 参数lpszDevice指定要打开的MCI设备名。若函数调用成功,则返回设备的标志号,否则返回0。 3、mciGetErrorString函数。该函数用于返回一个错误代码的文本描述,原型为:BOOL mciGetErrorString(DWORD fdwError, LPTSTR lpszErrorText, UINT cchErrorText); 参数说明如下: fdwError:上一次mciSendCommand函数调用的返回值。 lpszErrorText:用来接收返回的文本描述的缓冲区指针。 cchErrorText:指定lpszErrorText的长度。 各主要模块的实现 文件打开并获取信息 void CMiniDlg::Onopen() { // TODO: Add your control notification handler code here CString str;

相关文档
最新文档