سورس برنامه پخش فایلهای صوتی MP3 Player سی پلاس

قیمت : ۱۰۵۰۰ تومان ( ده هزار و پانصد تومان)

دسته :

کامپیوتر و IT

نوع فایل:

Cpp ,

توضیحات:

این پروژه در ویژوال استودیو انجام گردیده است.


توضیحات :

سورس کد پیاده سازی برنامه پخش فایلهای صوتی MP3 Player در پلاس پلاس

در این برنامه شما می توانید انواع فرمتهای صوتی را پخش و گوش دهید. 

همراه با فایلهای
EXE , CPP

تصاویری از محیط این برنامه :

=================================



=========================

 مشاهده قسمتی از سورس کد این پروژه :

////// متغیرهای سراسری برنامه
HWND hWnd = NULL;
HWND hPlay = NULL;
HWND hStop = NULL;
HWND hPause = NULL;
HWND hOpen = NULL;
HWND hProgress = NULL;
HANDLE hBitmap = NULL;
HDC dcSkin = NULL;
BOOL bDone = FALSE;
BOOL bRegioned = TRUE;
int Status = 0;
int ScreenWidth = 341;
int ScreenHeight = 263;
POINT curpoint, point;
RECT MainRect, rect;
HINSTANCE hInst;
MCIDEVICEID pDevice = 0;
MCI_OPEN_PARMS op;
char lastFile[256];
char Title[256];
char Time[256];
char szFileTitle[300];
int hours, minutes, seconds;
int rSeconds;

////// تعریف توابع اصلی برنامه
LRESULT CALLBACK WndProc( HWND hWnd, UINT Msg, WPARAM wParam, LPARAM lParam );
void SkinMe(HDC dc);
void RegionMe();
void ShowMessage( const char *Text, const char *Title, … );
void ShowMessage( const char *Text, … );
void PlayAudio( const char *Filename );
void PauseAudio();
void StopAudio();

//تابع ای پی آی برای شکل یا دیزاین برنامه
int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nShowCmd )
{
WNDCLASSEX wc;
MSG Msg;

wc.cbClsExtra = 0;
wc.cbWndExtra = 0;
wc.cbSize = sizeof(WNDCLASSEX);
wc.hbrBackground = (HBRUSH)GetStockObject( DKGRAY_BRUSH );
wc.hCursor = LoadCursor( NULL, IDC_ARROW );
wc.hIcon = LoadIcon( NULL, IDI_APPLICATION );
wc.hIconSm = LoadIcon( NULL, IDI_WINLOGO );
wc.hInstance = hInstance;
wc.lpfnWndProc = WndProc;
wc.lpszClassName = “AUDIOPLAYER”;
wc.lpszMenuName = NULL;
wc.style = CS_HREDRAW | CS_VREDRAW;

// کلاس پنجره برنامه
RegisterClassEx( &wc );

// ایجاد پنجره برنامه پخش فایل صوتی
int x = (GetSystemMetrics(SM_CXSCREEN) / 2) – (ScreenWidth / 2);
int y = (GetSystemMetrics(SM_CYSCREEN) / 2) – (ScreenHeight / 2);
hWnd = CreateWindowEx( NULL, “AUDIOPLAYER”, “Audio Player”, WS_OVERLAPPEDWINDOW,
x, y, ScreenWidth, ScreenHeight, NULL, NULL, hInstance, NULL );
ShowWindow( hWnd, SW_SHOW );
UpdateWindow( hWnd );

HBITMAP hSkinBmp = LoadBitmap( hInstance, MAKEINTRESOURCE( IDB_SKIN ));
dcSkin = CreateCompatibleDC(0);
HBITMAP hOldBmp = (HBITMAP)SelectObject( dcSkin, hSkinBmp );
RegionMe();

hInst = hInstance;

// ست کردن زمان در برنامه پخش فایل صوتی
DWORD lastTime = GetTickCount() * 0.001f;
DWORD curTime;

//نوار نمایش دهنده مدت زمان پخش
INITCOMMONCONTROLSEX InitCtrlEx;

InitCtrlEx.dwSize = sizeof(INITCOMMONCONTROLSEX);
InitCtrlEx.dwICC = ICC_PROGRESS_CLASS;
InitCommonControlsEx(&InitCtrlEx);

// تنظیم صحیح زمان
rect.left = 10;
rect.right = 320;
rect.top = 50;
rect.bottom = 100;

while( !bDone )
{
// بهترین زمان برای مدت زمان یا کارکرد فایل صوتی
if(Status == 1)
{

curTime = GetTickCount() * 0.001f;
if( curTime – lastTime >= 1 ) // 1 ثانیه
{
SendMessage(hProgress, PBM_SETSTEP, 1, 0);
SendMessage(hProgress, PBM_STEPIT, 0, 0);
if(seconds == 1 && minutes == 0 && hours == 0)
{ // پایان پخش آهنگ صوتی
sprintf( Title, “Stopped: %s”, szFileTitle );
StopAudio();
SendMessage(hProgress, PBM_SETPOS, 0, 0);
Status = 0;
}
if(seconds != 0)
seconds–; // کسر شدن ثانیه به ثانیه زمان هنگام پخش
else {
minutes–;
seconds = 59; // ریست شدن زمان
}
sprintf(Time, “%02d:%02d:%02d”, hours, minutes, seconds); // تازه سازی نمایش زمان پخش فایل صوتی
InvalidateRect(hWnd, &rect, TRUE);
lastTime = curTime;
}
}
else
{
if(GetMessage( &Msg, hWnd, NULL, NULL ))
{
TranslateMessage( &Msg );
DispatchMessage( &Msg );
}
}
}

return Msg.wParam;
}

//ایجاد دکمه های پخش و باز کردن و توقف و پخش مجدد فایل صوتی
LRESULT CALLBACK WndProc( HWND hWnd, UINT Msg, WPARAM wParam, LPARAM lParam )
{
switch( Msg )
{
case WM_CREATE:
hPlay = CreateWindow( “BUTTON”, “Play”, WS_CHILD | WS_VISIBLE | BS_FLAT | BS_BITMAP,
۱۰, ۲۰۰, ۳۵, ۳۵, hWnd, NULL, hInst, NULL );
hPause = CreateWindow( “BUTTON”, “Pause”, WS_CHILD | WS_VISIBLE | BS_FLAT | BS_BITMAP,
۴۵, ۲۰۰, ۳۵, ۳۵, hWnd, NULL, hInst, NULL );
hStop = CreateWindow( “BUTTON”, “Stop”, WS_CHILD | WS_VISIBLE | BS_FLAT | BS_BITMAP,
۸۰, ۲۰۰, ۳۵, ۳۵, hWnd, NULL, hInst, NULL );
hOpen = CreateWindow( “BUTTON”, “Open”, WS_CHILD | WS_VISIBLE | BS_FLAT | BS_BITMAP,
۲۹۶, ۲۰۰, ۳۵, ۳۵, hWnd, NULL, hInst, NULL );

hBitmap = LoadImage (GetModuleHandle (NULL), “Images/play_button.bmp”,
IMAGE_BITMAP,0, 0,LR_DEFAULTCOLOR | LR_LOADFROMFILE);
SendMessage(hPlay, BM_SETIMAGE, (WPARAM)IMAGE_BITMAP,
(LPARAM)(HANDLE) hBitmap);

hBitmap = LoadImage (GetModuleHandle (NULL), “Images/pause_button.bmp”,
IMAGE_BITMAP,0, 0,LR_DEFAULTCOLOR | LR_LOADFROMFILE);
SendMessage(hPause, BM_SETIMAGE, (WPARAM)IMAGE_BITMAP,
(LPARAM)(HANDLE) hBitmap);

hBitmap = LoadImage (GetModuleHandle (NULL), “Images/stop_button.bmp”,
IMAGE_BITMAP,0, 0,LR_DEFAULTCOLOR | LR_LOADFROMFILE);
SendMessage(hStop, BM_SETIMAGE, (WPARAM)IMAGE_BITMAP,
(LPARAM)(HANDLE) hBitmap);

hBitmap = LoadImage (GetModuleHandle (NULL), “Images/open_button.bmp”,
IMAGE_BITMAP,0, 0,LR_DEFAULTCOLOR | LR_LOADFROMFILE);
SendMessage(hOpen, BM_SETIMAGE, (WPARAM)IMAGE_BITMAP,
(LPARAM)(HANDLE) hBitmap);

hProgress = CreateWindowEx(NULL, PROGRESS_CLASS, NULL,
PBS_SMOOTH | WS_CHILD | WS_VISIBLE,
۱۲۰, ۲۰۰, ۱۷۱, ۳۵,
hWnd, NULL, hInst, NULL);
SendMessage(hProgress, PBM_SETBARCOLOR, 0, (COLORREF)RGB(20, 95, 190));
SendMessage(hProgress, PBM_SETBKCOLOR, 0, (COLORREF)RGB(210, 230 , 255));
break;

case WM_COMMAND:
if ((HWND)lParam == hPlay && HIWORD(wParam) == BN_CLICKED)
{
// پخش فایل صوتی
if(!strcmp(lastFile, “”)) return 0;
sprintf( Title, “Playing: %s”, szFileTitle );
InvalidateRect(hWnd, &rect, TRUE);
if(Status == 0) { //اگر در حال پخش نیست آنرا پخش کند
PlayAudio( lastFile );
Status = 1;
}
if(Status == 2) { // اگر پاوز یا متوقف است آنرا پخش کند
mciSendCommand( pDevice, MCI_RESUME, 0, NULL );
Status = 1;
}
}

if ((HWND)lParam == hPause && HIWORD(wParam) == BN_CLICKED)
{
// کد مربوط به توقف فایل صوتی یا همان پاوز کردن
if(!strcmp(lastFile, “”)) return 0;
sprintf( Title, “Paused: %s”, szFileTitle );
InvalidateRect(hWnd, &rect, TRUE);
PauseAudio();
Status = 2;
}

if ((HWND)lParam == hStop && HIWORD(wParam) == BN_CLICKED)
{
// توقف کامل پخش فایل صوتی یا استاپ
if(!strcmp(lastFile, “”)) return 0;
sprintf( Title, “Stopped: %s”, szFileTitle );
InvalidateRect(hWnd, &rect, TRUE);
StopAudio();
Status = 0;
SendMessage(hProgress, PBM_SETPOS, 0, 0);
}

if ( (HWND) lParam == hOpen && HIWORD(wParam) == BN_CLICKED)
{
// باز کردن فایل
TCHAR szFile[MAX_PATH] = { 0 };

TCHAR *szFilter =TEXT(“MP3 Files(*.mp3)\0”)
TEXT(“*.mp3\0”);

// نمایش پوشه ی جاری برای انتخاب فایل صوتی
TCHAR szCurDir[MAX_PATH];
::GetCurrentDirectory(MAX_PATH-1,szCurDir);

OPENFILENAME ofn;
ZeroMemory(&ofn,sizeof(OPENFILENAME));

ofn.lStructSize = sizeof(OPENFILENAME);
ofn.hwndOwner = GetParent(hWnd);
ofn.lpstrFilter = szFilter;
ofn.nFilterIndex = 1;
ofn.lpstrFile = szFile;
ofn.nMaxFile = sizeof(szFile);
ofn.lpstrTitle = TEXT(“Open”);
ofn.lpstrFileTitle = szFileTitle;
ofn.nMaxFileTitle = 300;
ofn.Flags = OFN_ENABLEHOOK | OFN_EXPLORER;
if (GetOpenFileName(&ofn))
{
if(Status == 1)
{
StopAudio();
Status = 0;
}
SendMessage(hProgress, PBM_SETPOS, 0, 0);

// سعی کردن برای باز نمودن فایل صوتی که ممکن است وجود داشته باشد
HANDLE hFile = CreateFile(ofn.lpstrFile, GENERIC_READ,
FILE_SHARE_READ, 0, OPEN_EXISTING,
FILE_ATTRIBUTE_NORMAL, 0);

// در صورت عدم موفقیت برای ایجاد و پخش فایل صوتی -۱ را بازگدانی کن
if (hFile == (HANDLE)-1)
{
MessageBox(NULL,”Could not open this file”, “File I/O Error”, MB_ICONSTOP);
return FALSE;
}

ZeroMemory(Title, sizeof(Title));
sprintf( Title, “Playing: %s”, szFileTitle );

// تابع پخش فایل صوتی را فراخوانی می کند
PlayAudio( ofn.lpstrFile );
Status = 1;
}
}
break;

case WM_LBUTTONDOWN:
SetCapture( hWnd );
GetWindowRect(hWnd, &MainRect);

//ذخیره سازی مختصات موقعیت کنونی مکان نما در هنگام پخش فایل صوتی
GetCursorPos(&point);

ScreenToClient(hWnd, &point);

// دکمه ی مینیمایز یا کوچک کردن صفحه
if(point.x >= 275 && point.x <= 287)
{
if(point.y >= 8 && point.y <= 20)
{
ShowWindow( hWnd, SW_MINIMIZE );
}
}

// کد بستن پنجره پخش برنامه
if(point.x >= 311 && point.x <= 324)
{
if(point.y >= 8 && point.y <= 20)
{
SendMessage( hWnd, WM_CLOSE, 0, 0 );
}
}
break;

case WM_LBUTTONUP:
ReleaseCapture();
break;

case WM_MOUSEMOVE:
GetCursorPos(&curpoint);

if(wParam==MK_LBUTTON)
{
MoveWindow(hWnd, curpoint.x – point.x, curpoint.y – point.y,
MainRect.right – MainRect.left, MainRect.bottom – MainRect.top,
TRUE);
}
break;

case WM_PAINT:
PAINTSTRUCT ps;
BeginPaint(hWnd,&ps);

// پوسته ی گرافیکی برنامه پخش صوتی
if (bRegioned) SkinMe(ps.hdc);

SetBkMode( ps.hdc, TRANSPARENT );
TextOut( ps.hdc, 10, 55, Title, 45 );
TextOut( ps.hdc, 10, 70, Time, strlen(Time) );

EndPaint(hWnd,&ps);
break;

case WM_DESTROY:
bDone = TRUE;
PostQuitMessage( 0 );
break;
}

return DefWindowProc( hWnd, Msg, wParam, lParam );
}

void SkinMe(HDC dc)
{
BitBlt(dc, 0,0,ScreenWidth-4,ScreenHeight, dcSkin, 0,0, SRCCOPY);
}

void RegionMe()
{
HRGN hRegion1 = CreateEllipticRgn(-59,-59,ScreenWidth+59,ScreenHeight+59);

SetWindowRgn(hWnd, hRegion1, true);

DeleteObject(hRegion1);

DWORD dwStyle = GetWindowLong(hWnd, GWL_STYLE);
dwStyle &= ~(WS_CAPTION|WS_SIZEBOX);
SetWindowLong(hWnd, GWL_STYLE, dwStyle);

// دوباره سازی ایجاد پنجره
InvalidateRect(hWnd, NULL, TRUE);
SetWindowPos(hWnd, NULL, 0,0,ScreenWidth-1,ScreenHeight-1, SWP_NOMOVE|SWP_NOZORDER);

bRegioned = true;
}

//تابع پخش فایل صوتی
void PlayAudio( const char *Filename )
{
if(Status == 1) return;

op.dwCallback = 0;
op.lpstrDeviceType = (char*)MCI_ALL_DEVICE_ID;
op.lpstrElementName = Filename;
op.lpstrAlias = 0;

//ارسال دستور پخش
if ( mciSendCommand( 0, MCI_OPEN,
MCI_OPEN_ELEMENT | MCI_WAIT,
{
// باز کردن و پخش مکوفقیت آمیز فایل صوتی
pDevice = op.wDeviceID;
}
else
{
// خطا
}

MCI_PLAY_PARMS pp;
pp.dwCallback = 0;

if(Status == 0)
{
strcpy( lastFile, Filename );
char szCommandBuffer[512] = {char()}, szReturnBuffer[32] = {char()};

::sprintf(szCommandBuffer, “open \”%s\” alias myfile”, Filename);

DWORD dwDummy = ::mciSendString(szCommandBuffer, NULL, NULL, NULL);

if(!dwDummy)
{
::sprintf(szCommandBuffer, “status myfile length”, Filename);
dwDummy = ::mciSendString(szCommandBuffer, szReturnBuffer, sizeof(szReturnBuffer), NULL);

::mciSendString(szCommandBuffer, NULL, NULL, NULL);
}

if(dwDummy) { }

rSeconds = atoi(szReturnBuffer)/1000;
SendMessage(hProgress, PBM_SETRANGE, 0, MAKELPARAM(0, rSeconds));
float nSecond = atof(szReturnBuffer)/1000/60;
seconds = (int)nSecond;
nSecond -= seconds;
seconds = nSecond * 60;
hours = atoi(szReturnBuffer)/1000/60/60;
minutes = atoi(szReturnBuffer)/1000/60;
InvalidateRect(hWnd, &rect, TRUE);
}

mciSendCommand(pDevice, MCI_PLAY, MCI_NOTIFY, (DWORD)&pp);
}

//تابع توقف موقت پخش فایل صوتی
void PauseAudio()
{
mciSendCommand( pDevice, MCI_PAUSE, 0, NULL );
}

//تابع توقف کامل پخش فایل صوتی
void StopAudio()
{
mciSendCommand( pDevice, MCI_STOP, 0, NULL );
mciSendCommand( pDevice, MCI_CLOSE, 0, 0 );
mciSendString( “close myfile”, 0, 0, 0);
}


دانلود کامل پروژه همراه با فایل سورس کد و فایل اجرایی آن
در تمامی ساعات شبانه روز >> پرداخت آنلاین و دانلود آنلاین پروژه


پذیرش و انجام سفارشات پروژه های شما
شماره تماس پشتیبانی سایت : ۰۹۳۹۲۷۶۱۶۳۰

 

توجه مهم :

*دوست عزیز در صورت نداشتن رمز پویا یا قطع بودن درگاه بانکی ، لطفا نام پروژه درخواستی خود را جهت هماهنگی برای دریافت شماره کارت واریزی و دریافت لینک دانلود، به واتساپ پشتیبانی سایت  ۰۹۳۹۲۷۶۱۶۳۰  ارسال کنید *(از ساعت ۸ الی ۲۳)

Related posts

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *