|
下面是一个遍历目录,找出MP3文件,显示到curses窗口中,想实现上下箭头进行选择,但就是不成功啊!
那位高手帮忙看看!!!
源码:
-----------------------------------
#include <stdio.h>
#include <unistd.h>
#include <fcntl.h>
#include <sys/stat.h>
#include <ftw.h>
#include <string.h>
#include <curses.h>
WINDOW *_mp3_list;
int i=1;
//遍历目录树,找出mp3文件,并显示到curses窗口中
int fn (const char *file,const struct stat *sb,int flag)
{
if ((flag ==FTW_F)&&(strcmp("mp3",(file+(strlen(file)-3)))==0))
{
FILE *stream;
long offset;
fpos_t pos;
char c1,c2;
char buffer[125]={0};
stream=fopen(file,"r");
fseek(stream,-125,SEEK_END);
fread(buffer,125,1,stream);
//显示每一mp3文件信息到curses窗口中
mvwaddstr(_mp3_list,i++,11,buffer);
refresh();
wrefresh(_mp3_list);
}
return 0;
}
main(){
int ch;
system("clear");
initscr();
_mp3_list=newwin(20,50,0,0);
keypad(_mp3_list,TRUE);
ftw("/home/cooler/",fn,500);
int j=1;
move(1,11);
cbreak();
noecho();
while(1)
{
ch=getch();
if(ch==KEY_DOWN&&j<i)
{
move(++j,11);
refresh();
wrefresh(_mp3_list);
}
if(ch==KEY_UP&&j!=1)
{
move(--j,11);
refresh();
wrefresh(_mp3_list);
}
if(ch==KEY_DOWN&&j==i)
{
move(1,11);
refresh();
wrefresh(_mp3_list);
}
if(ch==KEY_UP&&j==1)
{
move(i,11);
refresh();
wrefresh(_mp3_list);
}
}
endwin();
}
----------------------------------- |
|