音乐播放器软件设计报告Word文档下载推荐.docx
- 文档编号:21065303
- 上传时间:2023-01-27
- 格式:DOCX
- 页数:19
- 大小:1.11MB
音乐播放器软件设计报告Word文档下载推荐.docx
《音乐播放器软件设计报告Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《音乐播放器软件设计报告Word文档下载推荐.docx(19页珍藏版)》请在冰豆网上搜索。
5添加歌曲:
在播放列表的下方,有【添加】按钮,点击后即可选择想要添加歌曲
6.删除歌曲:
在播放列表的下方,有【删除】按钮,选择要删除的歌曲,点击【删除】即可正确的删除歌曲
7换肤:
点击换肤,则会弹出一个小框,在此可以进行界面变换
注:
在搜索歌词的时候,歌曲服务器类型不能为空,否则将无法进行搜索
代码解析
1.主界面可进行的各项操作:
ListView
2.添加歌词歌曲信息:
WinControl
3.播放音乐时可进行的各项操作(如搜索歌词):
MainDlg
在此主要写了音乐播放器所能进行的主要操作的代码解析,其余类函数及其方法的作用见源代码中的注释
1.主界面可进行的各项操作ListView
#include"
StdAfx.h"
/*-------------------------------------------------------------------------------*/
//函数名:
//函数功能:
创建时,初始化ListView成员变量
//函数参数:
无
//返回值:
ListView:
:
ListView()
{
hwnd=NULL;
hList=NULL;
first_insert_col=FALSE;
first_get_row=FALSE;
lvSubitemcount=0;
SubRowcount=0;
}
~ListView
//函数作用:
删除对象前的操作
~ListView()
SethList
设置ListView对象句柄
LV_num,ListView对象id;
voidListView:
SethList(intLV_num)
hList=GetDlgItem(hwnd,LV_num);
if(hList==NULL)
{
MessageBox(NULL,TEXT("
无法获取控件句柄"
),TEXT("
Error"
),MB_ICONERROR|MB_OK);
}
SetMainWinhwnd
设置ListVew所属窗口句柄
main_hwnd,所属窗口的句柄值;
SetMainWinhwnd(HWNDmain_hwnd)
if(hwnd!
=NULL)
已经获取主窗口句柄"
return;
hwnd=main_hwnd;
InsertRowItem
插入行的内容。
contain,对应栏的内容;
InsertRowItem(char*contain)
lvi.iSubItem=lvSubitemcount;
//列号
lvi.pszText=contain;
if(first_get_row==FALSE)
lvi.iItem=SendMessage(hList,LVM_GETITEMCOUNT,NULL,NULL);
//行号
lvi.mask=LVIF_TEXT;
ListView_InsertItem(hList,&
lvi);
first_get_row=TRUE;
else
ListView_SetItem(hList,&
lvSubitemcount++;
GetItem
获取指定栏的内容
item,接收内容的缓冲区;
size,缓冲区大小;
Colnum,指定栏的列号;
Row,指定栏的行号;
GetItem(char*item,intsize,intColnum,intRow)
),MB_ICONQUESTION|MB_OK);
lvi.mask=TVIF_TEXT;
lvi.pszText=item;
lvi.cchTextMax=size;
lvi.iItem=Row;
//行数
lvi.iSubItem=Colnum;
//列数
SendMessage(hList,LVM_GETITEM,0,(LPARAM)&
return;
GetRowCount
获取ListView中所有行的总数
intListView:
GetRowCount()
return0;
returnSendMessage(hList,LVM_GETITEMCOUNT,0,0);
GetColumnCount
获取ListView中所有列的列数
返回所有列的总数值
GetColumnCount()
HWNDtemp=ListView_GetHeader(hList);
returnSendMessage(temp,HDM_GETITEMCOUNT,0,0);
SetFocus
设置指定行为当前的焦点
Rownum,指定行的行号;
SetFocus(intRownum)
无法获取空间句柄"
Notice"
),MB_ICONINFORMATION|MB_OK);
//LVIS_SELECTED设置选项|LVIS_FOCUSED设置焦点|LVIS_DROPHILITED设置高亮
ListView_SetItemState(hList,Rownum,LVIS_SELECTED|LVIS_DROPHILITED,LVIS_SELECTED|LVIS_DROPHILITED);
GetCurIndex
获取当前被选中的行的索引
选中行的索引
GetCurIndex()
return-1;
returnSendMessage(hList,LVM_GETNEXTITEM,-1,LVNI_FOCUSED);
SetItem
修改指定栏的内容
contain,修改后的内容缓冲区;
Col,指定栏的列号;
SetItem(char*contain,intCol,intRow)
MessageBox(hwnd,TEXT("
无法获取控件句柄!
"
提示"
),MB_ICONERROR);
lvi.cchTextMax=sizeof(contain)/sizeof(char);
lvi.iSubItem=Col;
ListView_SetItem(hList,&
shellapi.h"
externListViewlv;
externcharhref[100][1000];
externintflag;
WinControl:
WinControl()
main_hwnd=NULL;
LRC_hwnd=NULL;
~WinControl()
voidWinControl:
WinInit()
if(main_hwnd==NULL)
LRC_hwnd=CreateDialog((HINSTANCE)GetWindowLong(main_hwnd,GWL_HINSTANCE),MAKEINTRESOURCE(IDD_LRC),main_hwnd,(DLGPROC)Sub_Proc);
SendMessage(GetDlgItem(main_hwnd,IDC_COMBO1),CB_ADDSTRING,0,(LPARAM)TEXT("
歌词服务器(电信)"
));
歌词服务器(网通)"
lv.InsertColumnItem("
歌曲名"
141,141);
//3
歌手名"
133,133);
//2
歌词ID"
//1
SetMainHwnd(HWNDhwnd)
main_hwnd=hwnd;
Action_Search()
if(1==flag)
charArtist[255];
charTitle[255];
charsendinfo[600];
charAtempcode[255];
charTtempcode[255];
WSADATAwsadata;
SOCKETfirst_socket;
SOCKADDR_INaddr;
structhostent*remotehost;
intresult;
charhostname[]="
;
if(main_hwnd==NULL)
{
return;
}
ZeroMemory(Artist,sizeof(Artist)/sizeof(char));
ZeroMemory(Title,sizeof(Title)/sizeof(char));
ZeroMemory(Atempcode,sizeof(Atempcode)/sizeof(char));
ZeroMemory(Ttempcode,sizeof(Ttempcode)/sizeof(char));
GetDlgItemText(main_hwnd,IDC_EDITARTIST,Artist,sizeof(Artist)/sizeof(char));
GetDlgItemText(main_hwnd,IDC_EDITTITLE,Title,sizeof(Title)/sizeof(char));
GetLinkString(Artist,Atempcode,sizeof(Atempcode)/sizeof(char));
GetLinkString(Title,Ttempcode,sizeof(Ttempcode)/sizeof(char));
intselect=SendMessage(GetDlgItem(main_hwnd,IDC_COMBO1),CB_GETCURSEL,0,0);
if(select==CB_ERR)
MessageBox(main_hwnd,TEXT("
请选择服务器!
),MB_ICONWARNING);
wsprintf(sendinfo,"
GET/dll/lyricsvr.dll?
sh?
Artist=%s&
Title=%s&
Flags=%dHTTP/1.1\r\nConten-type:
text/html\r\nHost:
\r\nAccept:
text/html,*/*\r\nAccept-Encoding:
identify\r\nUser-Agent:
Mozilla/3.0(compatible;
IndyLibrary)\r\n\r\n"
Atempcode,Ttempcode,select);
result=WSAStartup(MAKEWORD(2,0),&
wsadata);
if(result!
=NO_ERROR)
WinSocket初始化失败!
first_socket=socket(AF_INET,SOCK_STREAM,IPPROTO_IP);
if((remotehost=gethostbyname(hostname))==NULL)
获取服务器IP地址失败!
closesocket(first_socket);
WSACleanup();
addr.sin_family=AF_INET;
addr.sin_port=htons(80);
addr.sin_addr.s_addr=*((unsignedlong*)*remotehost->
h_addr_list);
if(connect(first_socket,(SOCKADDR*)&
addr,sizeof(addr))==SOCKET_ERROR)
连接创建失败!
result=send(first_socket,sendinfo,strlen(sendinfo),0);
if(result==SOCKET_ERROR)
发送数据失败!
ZeroMemory(sendinfo,sizeof(sendinfo)/sizeof(char));
result=recv(first_socket,sendinfo,sizeof(sendinfo)/sizeof(char),0);
接收信息失败!
closesocket(first_socket);
WSACleanup();
GetLRCInfo(sendinfo);
Action_ListViewdb(char*id,char*Artist,char*Title)
INT64num=(INT64)atoi(id);
chartempcode[180];
charresultcode[200];
charsendinfo[4000];
char*post=NULL;
ZeroMemory(tempcode,sizeof(tempcode)/sizeof(char));
ZeroMemory(resultcode,sizeof(resultcode)/sizeof(char));
wsprintf(tempcode,"
%s%s"
Artist,Title);
GetTempCode(t
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 音乐 播放 软件设计 报告