simple code 一些示例
struct music
{
char * cur_file_name;
//长文件名
char * shot_file_name;
//短文件名
char status_mode[10];
//播放状态
int hours;
//小时
int minutes;
//分钟
int seconds;
//秒
int milliseconds;
//毫秒
}MusicFile;
/// 程序流程函数
void prog_init();
void prog_close();
void print_func_info();
/// 辅助函数
void gotoxy(int x, int y);
void get_console_position(int &x, int &y);
void get_open_file();
void get_time_format(long time);
/// 音乐播放控制简化函数
BOOL music_open();
BOOL music_play();
BOOL music_close();
BOOL music_stop();
BOOL music_pause();
BOOL music_resume();
BOOL music_get_mode();
BOOL music_get_length();
BOOL music_get_position();
///
/// 程序初始化模块,完成一些变量的初始化
///
void prog_init()
{
MusicFile.cur_file_name = NULL;
MusicFile.shot_file_name = NULL;
MusicFile.hours = 0;
MusicFile.minutes = 0;
MusicFile.seconds = 0;
MusicFile.milliseconds = 0;
}
///
/// 程序结束模块,主要完成一些变量的释放
///
void prog_close()
{
if(MusicFile.cur_file_name != NULL)
{
free(MusicFile.cur_file_name);
}
if(MusicFile.shot_file_name != NULL)
{
free(MusicFile.shot_file_name);
}
return ;
}
//
/// 函数music_open功能:通过mci设备打开音乐文件
/// 返回值: bool类型,为真表示成功打开, 为假表示打开失败,或是用户没有选择文件
///
BOOL music_open()
{
int ret = -1;
char command[256];
if(MusicFile.shot_file_name != NULL){
wsprintf(command, "open %s alias mysound", MusicFile.shot_file_name);
ret = mciSendString(command, "", 0, NULL);
}
return ret == 0 ? TRUE : FALSE;
}
///
/// 函数music_play功能:播放打开的音乐文件
/// 返回值:bool类型,为真表示播放成功,为假表示播放失败
///
BOOL music_play()
{
int ret = -1;
ret = mciSendString("play mysound", "", 0, NULL);
return ret == 0 ? TRUE : FALSE;
}
///
/// 函数music_close功能:关闭音乐文件,正在播放的文件可以不调用stop
/// 返回值:bool类型,为真表示关闭成功,为假表示关闭失败
///
BOOL music_close()
{
int ret = -1;
ret = mciSendString("close mysound", "", 0, NULL);
return ret == 0 ? TRUE : FALSE;
}
///
/// 函数music_pause功能:暂停播放音乐文件
/// 返回值:bool类型,为真表示成功,为假表示失败
///
BOOL music_pause()
{
int ret = -1;
ret = mciSendString("pause mysound", "", 0, NULL);
return ret == 0 ? TRUE : FALSE;
}
///
/// 函数music_resume功能:恢复暂停音乐文件
/// 返回值:bool类型,为真表示成功,为假表示失败
///
BOOL music_resume()
{
int ret = -1;
ret = mciSendString("resume mysound", "", 0, NULL);
return ret == 0 ? TRUE : FALSE;
}
///
/// 函数music_stop功能:停止播放音乐文件
/// 返回值:bool类型,为真表示成功,为假表示失败
///
BOOL music_stop()
{
int ret = -1;
ret = mciSendString("stop mysound", "", 0, NULL);
return ret == 0 ? TRUE : FALSE;
}
///
/// 函数music_get_mode功能:取得音乐文件播放状态
/// 返回值:bool类型,为真表示成功,为假表示失败
///
BOOL music_get_mode()
{
int ret = -1;
char buffer[256];
ret = mciSendString("status mysound mode", buffer, sizeof(buffer), NULL);
if(strcmp(MusicFile.status_mode, buffer) != 0){
strcpy(MusicFile.status_mode, buffer);
}
return ret == 0 ? TRUE : FALSE;
}
///
/// 函数music_get_length功能:取得音乐文件总长度
/// 返回值:bool类型,为真表示成功,为假表示失败
///
BOOL music_get_length()
{
int ret = -1;
char buffer[256];
ret = mciSendString("status mysound length", buffer, sizeof(buffer), NULL);
get_time_format(atol(buffer));
return ret == 0 ? TRUE : FALSE;
}
///
/// 函数music_get_position功能:取得音乐文件播放位置
/// 返回值:bool类型,为真表示成功,为假表示失败
///
BOOL music_get_position()
{
int ret = -1;
char buffer[256];
ret = mciSendString("status mysound position", buffer, sizeof(buffer), NULL);
get_time_format(atol(buffer));
return ret == 0 ? TRUE : FALSE;
}
///
/// 函数get_time_format功能: 将以ms制式格式的歌曲位置转换成对应的hh:mm:ss.ms整数
/// 参数:time 为long型,ms制式格式
/// 无返回值
///
void get_time_format(long time)
{
MusicFile.hours
= time / 3600000;
MusicFile.minutes = time / 60000;
MusicFile.seconds = time % 60000 / 1000;
MusicFile.milliseconds = time % 60000 % 1000;
}
///
/// 函数get_open_file功能:打开一个对话框获取用户选择的文件
/// 同时把选择的文件名保存在music结构中
///
void get_open_file()
{
char file_name[256];
//至少256个字符以上
OPENFILENAME ofn;
ZeroMemory(&ofn, sizeof(OPENFILENAME));
file_name[0] = NULL;
//文件缓冲区第一个字符必须是NULL,没有这句是不会出对话框的
ofn.lStructSize = sizeof(OPENFILENAME);
ofn.lpstrFile = file_name;
ofn.nMaxFile = sizeof(file_name);
ofn.hwndOwner = GetForegroundWindow();
ofn.lpstrFilter = "All\0*.*\0MP3\0*.mp3\0";
ofn.nFilterIndex = 2;
ofn.Flags = OFN_PATHMUSTEXIST | OFN_FILEMUSTEXIST;
if(GetOpenFileName(&ofn))
{
printf("you select file is %s\n", ofn.lpstrFile);
//如果字符串已分配内存,就释放,避免拷入长字符串到小空间的bug。
if(MusicFile.cur_file_name != NULL){
free(MusicFile.cur_file_name);
}
MusicFile.cur_file_name = (char *)malloc(strlen(ofn.lpstrFile) + 1);
strcpy(MusicFile.cur_file_name, ofn.lpstrFile);
//获取相应的短文件名,播放时用
GetShortPathName(ofn.lpstrFile, file_name, sizeof(file_name));
if(MusicFile.shot_file_name != NULL){
free(MusicFile.shot_file_name);
}
MusicFile.shot_file_name = (char *)malloc(strlen(file_name) + 1);
strcpy(MusicFile.shot_file_name, file_name);
}
}