[MPLAY32]
[reactos.git] / reactos / base / applications / mplay32 / mplay32.c
index b1a826b..3e0cca4 100644 (file)
@@ -106,7 +106,7 @@ InitControls(HWND hwnd)
                                0,
                                0,
                                340,
-                               30,
+                               20,
                                hwnd,
                                NULL,
                                hInstance,
@@ -142,7 +142,7 @@ InitControls(HWND hwnd)
 }
 
 static UINT
-IsSupportedFileExtension(LPWSTR lpFileName)
+IsSupportedFileExtension(LPTSTR lpFileName)
 {
     TCHAR szExt[MAX_PATH];
     INT DotPos = 0, i, j;
@@ -188,7 +188,7 @@ CloseMciDevice(VOID)
 
     if (bIsOpened)
     {
-        dwError = mciSendCommand(wDeviceId, MCI_CLOSE, MCI_WAIT, (DWORD)(LPMCI_GENERIC_PARMS)&mciGeneric);
+        dwError = mciSendCommand(wDeviceId, MCI_CLOSE, MCI_WAIT, (DWORD_PTR)&mciGeneric);
         if (dwError) return dwError;
         bIsOpened = FALSE;
     }
@@ -197,10 +197,11 @@ CloseMciDevice(VOID)
 }
 
 static DWORD
-OpenMciDevice(LPTSTR lpType, LPTSTR lpFileName)
+OpenMciDevice(HWND hwnd, LPTSTR lpType, LPTSTR lpFileName)
 {
     MCI_STATUS_PARMS mciStatus;
     MCI_OPEN_PARMS mciOpen;
+    TCHAR szNewTitle[MAX_PATH];
     DWORD dwError;
 
     if (bIsOpened)
@@ -214,7 +215,7 @@ OpenMciDevice(LPTSTR lpType, LPTSTR lpFileName)
     mciOpen.wDeviceID = 0;
     mciOpen.lpstrAlias = NULL;
 
-    dwError = mciSendCommand(0, MCI_OPEN, MCI_OPEN_TYPE | MCI_OPEN_ELEMENT | MCI_WAIT, (DWORD)(LPVOID)&mciOpen);
+    dwError = mciSendCommand(0, MCI_OPEN, MCI_OPEN_TYPE | MCI_OPEN_ELEMENT | MCI_WAIT, (DWORD_PTR)&mciOpen);
     if (dwError != 0)
     {
         MessageBox(0, _T("Can't open device! (1)"), NULL, MB_OK);
@@ -223,7 +224,7 @@ OpenMciDevice(LPTSTR lpType, LPTSTR lpFileName)
 
     mciStatus.dwItem = MCI_STATUS_LENGTH;
 
-    dwError = mciSendCommand(mciOpen.wDeviceID, MCI_STATUS, MCI_STATUS_ITEM | MCI_WAIT, (DWORD)(LPVOID)&mciStatus);
+    dwError = mciSendCommand(mciOpen.wDeviceID, MCI_STATUS, MCI_STATUS_ITEM | MCI_WAIT, (DWORD_PTR)&mciStatus);
     if (dwError != 0)
     {
         MessageBox(0, _T("Can't open device! (2)"), NULL, MB_OK);
@@ -252,10 +253,13 @@ OpenMciDevice(LPTSTR lpType, LPTSTR lpFileName)
         SendMessage(hTrackBar, TBM_SETTICFREQ, (WPARAM) 100000, (LPARAM) 0);
     }
 
+    _stprintf(szNewTitle, _T("%s - %s"), szAppTitle, lpFileName);
+    SetWindowText(hwnd, szNewTitle);
+
     MaxFilePos = mciStatus.dwReturn;
     wDeviceId = mciOpen.wDeviceID;
     bIsOpened = TRUE;
-    lstrcpy(szPrevFile, lpFileName);
+    _tcscpy(szPrevFile, lpFileName);
     return TRUE;
 }
 
@@ -279,15 +283,15 @@ SeekPlayback(HWND hwnd, DWORD dwNewPos)
 
     if (bIsOpened)
     {
-        mciSeek.dwTo = dwNewPos;
-        dwError = mciSendCommand(wDeviceId, MCI_SEEK, MCI_WAIT | MCI_TO, (DWORD)(LPVOID)&mciSeek);
+        mciSeek.dwTo = (DWORD_PTR)dwNewPos;
+        dwError = mciSendCommand(wDeviceId, MCI_SEEK, MCI_WAIT | MCI_TO, (DWORD_PTR)&mciSeek);
         if (dwError != 0)
         {
             MessageBox(hwnd, _T("SeekPlayback: Can't seek!"), NULL, MB_OK);
         }
 
-        mciPlay.dwCallback = (DWORD)hwnd;
-        dwError = mciSendCommand(wDeviceId, MCI_PLAY, MCI_NOTIFY, (DWORD)(LPVOID)&mciPlay);
+        mciPlay.dwCallback = (DWORD_PTR)hwnd;
+        dwError = mciSendCommand(wDeviceId, MCI_PLAY, MCI_NOTIFY, (DWORD_PTR)&mciPlay);
         if (dwError != 0)
         {
             MessageBox(hwnd, _T("SeekPlayback: Can't play!"), NULL, MB_OK);
@@ -304,7 +308,7 @@ SeekBackPlayback(HWND hwnd)
     if (!bIsOpened) return;
 
     mciStatus.dwItem = MCI_STATUS_POSITION;
-    mciSendCommand(wDeviceId, MCI_STATUS, MCI_STATUS_ITEM, (DWORD)(LPVOID)&mciStatus);
+    mciSendCommand(wDeviceId, MCI_STATUS, MCI_STATUS_ITEM, (DWORD_PTR)&mciStatus);
 
     dwNewPos = mciStatus.dwReturn - 1;
 
@@ -327,7 +331,7 @@ SeekForwPlayback(HWND hwnd)
     if (!bIsOpened) return;
 
     mciStatus.dwItem = MCI_STATUS_POSITION;
-    mciSendCommand(wDeviceId, MCI_STATUS, MCI_STATUS_ITEM, (DWORD)(LPVOID)&mciStatus);
+    mciSendCommand(wDeviceId, MCI_STATUS, MCI_STATUS_ITEM, (DWORD_PTR)&mciStatus);
 
     dwNewPos = mciStatus.dwReturn + 1;
 
@@ -349,7 +353,7 @@ PausePlayback(HWND hwnd)
 
     if (bIsOpened)
     {
-        dwError = mciSendCommand(wDeviceId, MCI_PAUSE, MCI_WAIT, (DWORD)(LPMCI_GENERIC_PARMS)&mciGeneric);
+        dwError = mciSendCommand(wDeviceId, MCI_PAUSE, MCI_WAIT, (DWORD_PTR)&mciGeneric);
         if (dwError != 0)
         {
             MessageBox(hwnd, _T("Can't pause!"), NULL, MB_OK);
@@ -366,7 +370,7 @@ ResumePlayback(HWND hwnd)
 
     if (bIsPaused)
     {
-        dwError = mciSendCommand(wDeviceId, MCI_RESUME, MCI_WAIT, (DWORD)(LPMCI_GENERIC_PARMS)&mciGeneric);
+        dwError = mciSendCommand(wDeviceId, MCI_RESUME, MCI_WAIT, (DWORD_PTR)&mciGeneric);
         if (dwError != 0)
         {
             MessageBox(hwnd, _T("Can't resume!"), NULL, MB_OK);
@@ -384,7 +388,7 @@ PlayTimerProc(HWND hwnd, UINT uMsg, UINT_PTR idEvent, DWORD dwTime)
     if (!bIsOpened) KillTimer(hwnd, IDT_PLAYTIMER);
 
     mciStatus.dwItem = MCI_STATUS_POSITION;
-    mciSendCommand(wDeviceId, MCI_STATUS, MCI_STATUS_ITEM, (DWORD)(LPVOID)&mciStatus);
+    mciSendCommand(wDeviceId, MCI_STATUS, MCI_STATUS_ITEM, (DWORD_PTR)&mciStatus);
     dwPos = mciStatus.dwReturn;
 
     if((UINT)dwPos >= MaxFilePos)
@@ -398,23 +402,23 @@ PlayTimerProc(HWND hwnd, UINT uMsg, UINT_PTR idEvent, DWORD dwTime)
 }
 
 static VOID
-PlayFile(HWND hwnd, LPWSTR lpFileName)
+PlayFile(HWND hwnd, LPTSTR lpFileName)
 {
     MCI_PLAY_PARMS mciPlay;
     TCHAR szLocalFileName[MAX_PATH];
     UINT FileType;
-    DWORD dwError;
+    MCIERROR mciError;
 
     if (lpFileName == NULL)
     {
         if (szPrevFile[0] == _T('\0'))
             return;
 
-        lstrcpy(szLocalFileName, szPrevFile);
+        _tcscpy(szLocalFileName, szPrevFile);
     }
     else
     {
-        lstrcpy(szLocalFileName, lpFileName);
+        _tcscpy(szLocalFileName, lpFileName);
     }
 
     if (GetFileAttributes(szLocalFileName) == INVALID_FILE_ATTRIBUTES)
@@ -430,29 +434,29 @@ PlayFile(HWND hwnd, LPWSTR lpFileName)
             MessageBox(hwnd, _T("Unsupported format!"), NULL, MB_OK);
             return;
         case WAVE_FILE:
-            OpenMciDevice(_T("waveaudio"), szLocalFileName);
+            OpenMciDevice(hwnd, _T("waveaudio"), szLocalFileName);
             break;
         case MIDI_FILE:
-            OpenMciDevice(_T("sequencer"), szLocalFileName);
+            OpenMciDevice(hwnd, _T("sequencer"), szLocalFileName);
             break;
         case AUDIOCD_FILE:
-            OpenMciDevice(_T("cdaudio"), szLocalFileName);
+            OpenMciDevice(hwnd, _T("cdaudio"), szLocalFileName);
             break;
         case AVI_FILE:
-            OpenMciDevice(_T("avivideo"), szLocalFileName);
+            OpenMciDevice(hwnd, _T("avivideo"), szLocalFileName);
             break;
     }
 
     SetTimer(hwnd, IDT_PLAYTIMER, 100, (TIMERPROC) PlayTimerProc);
 
-    dwError = mciSendCommand(wDeviceId, MCI_SEEK, MCI_WAIT | MCI_SEEK_TO_START, 0);
+    mciSendCommand(wDeviceId, MCI_SEEK, MCI_WAIT | MCI_SEEK_TO_START, 0);
 
-    mciPlay.dwCallback = (DWORD)hwnd;
+    mciPlay.dwCallback = (DWORD_PTR)hwnd;
     mciPlay.dwFrom = 0;
     mciPlay.dwTo = MaxFilePos;
 
-    dwError = mciSendCommand(wDeviceId, MCI_PLAY, MCI_NOTIFY | MCI_FROM | MCI_TO, (DWORD)(LPVOID)&mciPlay);
-    if (dwError != 0)
+    mciError = mciSendCommand(wDeviceId, MCI_PLAY, MCI_NOTIFY | MCI_FROM /*| MCI_TO*/, (DWORD_PTR)&mciPlay);
+    if (mciError != 0)
     {
         MessageBox(hwnd, _T("Can't play!"), NULL, MB_OK);
     }
@@ -471,7 +475,7 @@ OpenFileDialog(HWND hwnd)
 
     if (!GetCurrentDirectory(sizeof(szCurrentDir) / sizeof(TCHAR), szCurrentDir))
     {
-        lstrcpy(szCurrentDir, _T("c:\\"));
+        _tcscpy(szCurrentDir, _T("c:\\"));
     }
 
     OpenFileName.lStructSize     = sizeof(OpenFileName);
@@ -573,8 +577,15 @@ MainWndProc(HWND hwnd, UINT Message, WPARAM wParam, LPARAM lParam)
         {
             if (hTrackBar == (HWND) lParam)
             {
-                DWORD dwNewPos = (DWORD) SendMessage(hTrackBar, TBM_GETPOS, 0, 0);
-                SeekPlayback(hwnd, dwNewPos);
+                if (bIsOpened)
+                {
+                    DWORD dwNewPos = (DWORD) SendMessage(hTrackBar, TBM_GETPOS, 0, 0);
+                    SeekPlayback(hwnd, dwNewPos);
+                }
+                else
+                {
+                    SendMessage(hTrackBar, TBM_SETPOS, TRUE, 0);
+                }
             }
         }
         break;
@@ -626,13 +637,16 @@ MainWndProc(HWND hwnd, UINT Message, WPARAM wParam, LPARAM lParam)
 
                 case IDM_CLOSE_FILE:
                     StopPlayback(hwnd);
-                    lstrcpy(szPrevFile, _T("\0"));
+                    _tcscpy(szPrevFile, _T("\0"));
                     break;
 
                 case IDM_ABOUT:
-                    ShellAbout(hwnd, szAppTitle, 0, 0);
+        {
+                    HICON mplayIcon = LoadIcon(hInstance, MAKEINTRESOURCE(IDI_MAIN));
+                    ShellAbout(hwnd, szAppTitle, 0, mplayIcon);
+            DeleteObject(mplayIcon);
                     break;
-
+        }
                 case IDM_EXIT:
                     PostMessage(hwnd, WM_CLOSE, 0, 0);
                     return 0;