mirror of
https://github.com/reactos/reactos.git
synced 2025-04-20 04:20:46 +00:00
[MPLAY32] Add entries for found mci devices in the "Device" menu. By Ricardo Hanke. CORE-9385
svn path=/trunk/; revision=66833
This commit is contained in:
parent
dfeca474ec
commit
10ae1b40b3
24 changed files with 163 additions and 15 deletions
|
@ -26,6 +26,7 @@ BEGIN
|
||||||
END
|
END
|
||||||
POPUP "&Device"
|
POPUP "&Device"
|
||||||
BEGIN
|
BEGIN
|
||||||
|
MENUITEM SEPARATOR
|
||||||
MENUITEM "&Properties", IDM_DEVPROPS
|
MENUITEM "&Properties", IDM_DEVPROPS
|
||||||
MENUITEM SEPARATOR
|
MENUITEM SEPARATOR
|
||||||
MENUITEM "&Volume Control", IDM_VOLUMECTL
|
MENUITEM "&Volume Control", IDM_VOLUMECTL
|
||||||
|
|
|
@ -27,6 +27,7 @@ BEGIN
|
||||||
END
|
END
|
||||||
POPUP "&Zařízení"
|
POPUP "&Zařízení"
|
||||||
BEGIN
|
BEGIN
|
||||||
|
MENUITEM SEPARATOR
|
||||||
MENUITEM "&Vlastnosti", IDM_DEVPROPS
|
MENUITEM "&Vlastnosti", IDM_DEVPROPS
|
||||||
MENUITEM SEPARATOR
|
MENUITEM SEPARATOR
|
||||||
MENUITEM "Ovládání &hlasitosti", IDM_VOLUMECTL
|
MENUITEM "Ovládání &hlasitosti", IDM_VOLUMECTL
|
||||||
|
|
|
@ -22,6 +22,7 @@ BEGIN
|
||||||
END
|
END
|
||||||
POPUP "&Gerät"
|
POPUP "&Gerät"
|
||||||
BEGIN
|
BEGIN
|
||||||
|
MENUITEM SEPARATOR
|
||||||
MENUITEM "&Eigenschaften", IDM_DEVPROPS
|
MENUITEM "&Eigenschaften", IDM_DEVPROPS
|
||||||
MENUITEM SEPARATOR
|
MENUITEM SEPARATOR
|
||||||
MENUITEM "&Lautstärkeregelung", IDM_VOLUMECTL
|
MENUITEM "&Lautstärkeregelung", IDM_VOLUMECTL
|
||||||
|
|
|
@ -22,6 +22,7 @@ BEGIN
|
||||||
END
|
END
|
||||||
POPUP "&Device"
|
POPUP "&Device"
|
||||||
BEGIN
|
BEGIN
|
||||||
|
MENUITEM SEPARATOR
|
||||||
MENUITEM "&Properties", IDM_DEVPROPS
|
MENUITEM "&Properties", IDM_DEVPROPS
|
||||||
MENUITEM SEPARATOR
|
MENUITEM SEPARATOR
|
||||||
MENUITEM "&Volume Control", IDM_VOLUMECTL
|
MENUITEM "&Volume Control", IDM_VOLUMECTL
|
||||||
|
|
|
@ -22,6 +22,7 @@ BEGIN
|
||||||
END
|
END
|
||||||
POPUP "&Dispositivo"
|
POPUP "&Dispositivo"
|
||||||
BEGIN
|
BEGIN
|
||||||
|
MENUITEM SEPARATOR
|
||||||
MENUITEM "&Propiedades", IDM_DEVPROPS
|
MENUITEM "&Propiedades", IDM_DEVPROPS
|
||||||
MENUITEM SEPARATOR
|
MENUITEM SEPARATOR
|
||||||
MENUITEM "Control de &volumen", IDM_VOLUMECTL
|
MENUITEM "Control de &volumen", IDM_VOLUMECTL
|
||||||
|
|
|
@ -22,6 +22,7 @@ BEGIN
|
||||||
END
|
END
|
||||||
POPUP "Périp&hérique"
|
POPUP "Périp&hérique"
|
||||||
BEGIN
|
BEGIN
|
||||||
|
MENUITEM SEPARATOR
|
||||||
MENUITEM "&Propriétés", IDM_DEVPROPS
|
MENUITEM "&Propriétés", IDM_DEVPROPS
|
||||||
MENUITEM SEPARATOR
|
MENUITEM SEPARATOR
|
||||||
MENUITEM "Contrôle du &volume", IDM_VOLUMECTL
|
MENUITEM "Contrôle du &volume", IDM_VOLUMECTL
|
||||||
|
|
|
@ -22,6 +22,7 @@ BEGIN
|
||||||
END
|
END
|
||||||
POPUP "&Device"
|
POPUP "&Device"
|
||||||
BEGIN
|
BEGIN
|
||||||
|
MENUITEM SEPARATOR
|
||||||
MENUITEM "&Properties", IDM_DEVPROPS
|
MENUITEM "&Properties", IDM_DEVPROPS
|
||||||
MENUITEM SEPARATOR
|
MENUITEM SEPARATOR
|
||||||
MENUITEM "&Volume Control", IDM_VOLUMECTL
|
MENUITEM "&Volume Control", IDM_VOLUMECTL
|
||||||
|
|
|
@ -22,6 +22,7 @@ BEGIN
|
||||||
END
|
END
|
||||||
POPUP "&Device"
|
POPUP "&Device"
|
||||||
BEGIN
|
BEGIN
|
||||||
|
MENUITEM SEPARATOR
|
||||||
MENUITEM "&Properties", IDM_DEVPROPS
|
MENUITEM "&Properties", IDM_DEVPROPS
|
||||||
MENUITEM SEPARATOR
|
MENUITEM SEPARATOR
|
||||||
MENUITEM "&Volume Control", IDM_VOLUMECTL
|
MENUITEM "&Volume Control", IDM_VOLUMECTL
|
||||||
|
|
|
@ -22,6 +22,7 @@ BEGIN
|
||||||
END
|
END
|
||||||
POPUP "&Device"
|
POPUP "&Device"
|
||||||
BEGIN
|
BEGIN
|
||||||
|
MENUITEM SEPARATOR
|
||||||
MENUITEM "&Properties", IDM_DEVPROPS
|
MENUITEM "&Properties", IDM_DEVPROPS
|
||||||
MENUITEM SEPARATOR
|
MENUITEM SEPARATOR
|
||||||
MENUITEM "&Volume Control", IDM_VOLUMECTL
|
MENUITEM "&Volume Control", IDM_VOLUMECTL
|
||||||
|
|
|
@ -22,6 +22,7 @@ BEGIN
|
||||||
END
|
END
|
||||||
POPUP "&Device"
|
POPUP "&Device"
|
||||||
BEGIN
|
BEGIN
|
||||||
|
MENUITEM SEPARATOR
|
||||||
MENUITEM "&Properties", IDM_DEVPROPS
|
MENUITEM "&Properties", IDM_DEVPROPS
|
||||||
MENUITEM SEPARATOR
|
MENUITEM SEPARATOR
|
||||||
MENUITEM "&Volume Control", IDM_VOLUMECTL
|
MENUITEM "&Volume Control", IDM_VOLUMECTL
|
||||||
|
|
|
@ -22,6 +22,7 @@ BEGIN
|
||||||
END
|
END
|
||||||
POPUP "&Device"
|
POPUP "&Device"
|
||||||
BEGIN
|
BEGIN
|
||||||
|
MENUITEM SEPARATOR
|
||||||
MENUITEM "&Properties", IDM_DEVPROPS
|
MENUITEM "&Properties", IDM_DEVPROPS
|
||||||
MENUITEM SEPARATOR
|
MENUITEM SEPARATOR
|
||||||
MENUITEM "&Volume Control", IDM_VOLUMECTL
|
MENUITEM "&Volume Control", IDM_VOLUMECTL
|
||||||
|
|
|
@ -30,6 +30,7 @@ BEGIN
|
||||||
END
|
END
|
||||||
POPUP "&Urządzenie"
|
POPUP "&Urządzenie"
|
||||||
BEGIN
|
BEGIN
|
||||||
|
MENUITEM SEPARATOR
|
||||||
MENUITEM "Właś&ciwości", IDM_DEVPROPS
|
MENUITEM "Właś&ciwości", IDM_DEVPROPS
|
||||||
MENUITEM SEPARATOR
|
MENUITEM SEPARATOR
|
||||||
MENUITEM "&Regulacja głośności", IDM_VOLUMECTL
|
MENUITEM "&Regulacja głośności", IDM_VOLUMECTL
|
||||||
|
|
|
@ -24,6 +24,7 @@ BEGIN
|
||||||
END
|
END
|
||||||
POPUP "&Device"
|
POPUP "&Device"
|
||||||
BEGIN
|
BEGIN
|
||||||
|
MENUITEM SEPARATOR
|
||||||
MENUITEM "&Properties", IDM_DEVPROPS
|
MENUITEM "&Properties", IDM_DEVPROPS
|
||||||
MENUITEM SEPARATOR
|
MENUITEM SEPARATOR
|
||||||
MENUITEM "&Volume Control", IDM_VOLUMECTL
|
MENUITEM "&Volume Control", IDM_VOLUMECTL
|
||||||
|
|
|
@ -28,6 +28,7 @@ BEGIN
|
||||||
END
|
END
|
||||||
POPUP "&Dispozitiv"
|
POPUP "&Dispozitiv"
|
||||||
BEGIN
|
BEGIN
|
||||||
|
MENUITEM SEPARATOR
|
||||||
MENUITEM "&Proprietăți…", IDM_DEVPROPS
|
MENUITEM "&Proprietăți…", IDM_DEVPROPS
|
||||||
MENUITEM SEPARATOR
|
MENUITEM SEPARATOR
|
||||||
MENUITEM "Control &volum…", IDM_VOLUMECTL
|
MENUITEM "Control &volum…", IDM_VOLUMECTL
|
||||||
|
|
|
@ -22,6 +22,7 @@ BEGIN
|
||||||
END
|
END
|
||||||
POPUP "&Устройство"
|
POPUP "&Устройство"
|
||||||
BEGIN
|
BEGIN
|
||||||
|
MENUITEM SEPARATOR
|
||||||
MENUITEM "&Свойства", IDM_DEVPROPS
|
MENUITEM "&Свойства", IDM_DEVPROPS
|
||||||
MENUITEM SEPARATOR
|
MENUITEM SEPARATOR
|
||||||
MENUITEM "&Громкость", IDM_VOLUMECTL
|
MENUITEM "&Громкость", IDM_VOLUMECTL
|
||||||
|
|
|
@ -27,6 +27,7 @@ BEGIN
|
||||||
END
|
END
|
||||||
POPUP "&Device"
|
POPUP "&Device"
|
||||||
BEGIN
|
BEGIN
|
||||||
|
MENUITEM SEPARATOR
|
||||||
MENUITEM "&Properties", IDM_DEVPROPS
|
MENUITEM "&Properties", IDM_DEVPROPS
|
||||||
MENUITEM SEPARATOR
|
MENUITEM SEPARATOR
|
||||||
MENUITEM "&Volume Control", IDM_VOLUMECTL
|
MENUITEM "&Volume Control", IDM_VOLUMECTL
|
||||||
|
|
|
@ -26,6 +26,7 @@ BEGIN
|
||||||
END
|
END
|
||||||
POPUP "&Device"
|
POPUP "&Device"
|
||||||
BEGIN
|
BEGIN
|
||||||
|
MENUITEM SEPARATOR
|
||||||
MENUITEM "&Properties", IDM_DEVPROPS
|
MENUITEM "&Properties", IDM_DEVPROPS
|
||||||
MENUITEM SEPARATOR
|
MENUITEM SEPARATOR
|
||||||
MENUITEM "&Volume Control", IDM_VOLUMECTL
|
MENUITEM "&Volume Control", IDM_VOLUMECTL
|
||||||
|
|
|
@ -29,6 +29,7 @@ BEGIN
|
||||||
END
|
END
|
||||||
POPUP "&Device"
|
POPUP "&Device"
|
||||||
BEGIN
|
BEGIN
|
||||||
|
MENUITEM SEPARATOR
|
||||||
MENUITEM "&Properties", IDM_DEVPROPS
|
MENUITEM "&Properties", IDM_DEVPROPS
|
||||||
MENUITEM SEPARATOR
|
MENUITEM SEPARATOR
|
||||||
MENUITEM "&Volume Control", IDM_VOLUMECTL
|
MENUITEM "&Volume Control", IDM_VOLUMECTL
|
||||||
|
|
|
@ -24,6 +24,7 @@ BEGIN
|
||||||
END
|
END
|
||||||
POPUP "&Aygıt"
|
POPUP "&Aygıt"
|
||||||
BEGIN
|
BEGIN
|
||||||
|
MENUITEM SEPARATOR
|
||||||
MENUITEM "&Husûsiyetler", IDM_DEVPROPS
|
MENUITEM "&Husûsiyetler", IDM_DEVPROPS
|
||||||
MENUITEM SEPARATOR
|
MENUITEM SEPARATOR
|
||||||
MENUITEM "&Ses Düzeyi Denetimi", IDM_VOLUMECTL
|
MENUITEM "&Ses Düzeyi Denetimi", IDM_VOLUMECTL
|
||||||
|
|
|
@ -30,6 +30,7 @@ BEGIN
|
||||||
END
|
END
|
||||||
POPUP "&Device"
|
POPUP "&Device"
|
||||||
BEGIN
|
BEGIN
|
||||||
|
MENUITEM SEPARATOR
|
||||||
MENUITEM "&Properties", IDM_DEVPROPS
|
MENUITEM "&Properties", IDM_DEVPROPS
|
||||||
MENUITEM SEPARATOR
|
MENUITEM SEPARATOR
|
||||||
MENUITEM "&Volume Control", IDM_VOLUMECTL
|
MENUITEM "&Volume Control", IDM_VOLUMECTL
|
||||||
|
|
|
@ -24,6 +24,7 @@ BEGIN
|
||||||
END
|
END
|
||||||
POPUP "设备(&D)"
|
POPUP "设备(&D)"
|
||||||
BEGIN
|
BEGIN
|
||||||
|
MENUITEM SEPARATOR
|
||||||
MENUITEM "属性(&P)", IDM_DEVPROPS
|
MENUITEM "属性(&P)", IDM_DEVPROPS
|
||||||
MENUITEM SEPARATOR
|
MENUITEM SEPARATOR
|
||||||
MENUITEM "音量控制(&V)", IDM_VOLUMECTL
|
MENUITEM "音量控制(&V)", IDM_VOLUMECTL
|
||||||
|
|
|
@ -30,6 +30,7 @@ BEGIN
|
||||||
END
|
END
|
||||||
POPUP "&Device"
|
POPUP "&Device"
|
||||||
BEGIN
|
BEGIN
|
||||||
|
MENUITEM SEPARATOR
|
||||||
MENUITEM "&Properties", IDM_DEVPROPS
|
MENUITEM "&Properties", IDM_DEVPROPS
|
||||||
MENUITEM SEPARATOR
|
MENUITEM SEPARATOR
|
||||||
MENUITEM "&Volume Control", IDM_VOLUMECTL
|
MENUITEM "&Volume Control", IDM_VOLUMECTL
|
||||||
|
|
|
@ -483,6 +483,38 @@ GetDeviceFriendlyName(LPTSTR lpDeviceName, LPTSTR lpFriendlyName, DWORD dwFriend
|
||||||
return mciError;
|
return mciError;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static BOOL
|
||||||
|
DeviceUsesFiles(LPTSTR lpDeviceName)
|
||||||
|
{
|
||||||
|
MCIERROR mciError;
|
||||||
|
MCI_OPEN_PARMS mciOpen;
|
||||||
|
MCI_GETDEVCAPS_PARMS mciDevCaps;
|
||||||
|
MCI_GENERIC_PARMS mciGeneric;
|
||||||
|
|
||||||
|
mciOpen.dwCallback = 0;
|
||||||
|
mciOpen.wDeviceID = 0;
|
||||||
|
mciOpen.lpstrDeviceType = lpDeviceName;
|
||||||
|
mciOpen.lpstrElementName = NULL;
|
||||||
|
mciOpen.lpstrAlias = NULL;
|
||||||
|
|
||||||
|
mciError = mciSendCommand(0, MCI_OPEN, MCI_OPEN_TYPE | MCI_WAIT, (DWORD_PTR)&mciOpen);
|
||||||
|
if (mciError != 0)
|
||||||
|
return FALSE;
|
||||||
|
|
||||||
|
mciDevCaps.dwCallback = 0;
|
||||||
|
mciDevCaps.dwReturn = 0;
|
||||||
|
mciDevCaps.dwItem = MCI_GETDEVCAPS_USES_FILES;
|
||||||
|
|
||||||
|
mciError = mciSendCommand(mciOpen.wDeviceID, MCI_GETDEVCAPS, MCI_WAIT | MCI_GETDEVCAPS_ITEM, (DWORD_PTR)&mciDevCaps);
|
||||||
|
if (mciError != 0)
|
||||||
|
return FALSE;
|
||||||
|
|
||||||
|
mciGeneric.dwCallback = 0;
|
||||||
|
mciSendCommand(mciOpen.wDeviceID, MCI_CLOSE, MCI_WAIT, (DWORD_PTR)&mciGeneric);
|
||||||
|
|
||||||
|
return (BOOL)mciDevCaps.dwReturn;
|
||||||
|
}
|
||||||
|
|
||||||
static MCIERROR
|
static MCIERROR
|
||||||
CloseMciDevice(VOID)
|
CloseMciDevice(VOID)
|
||||||
{
|
{
|
||||||
|
@ -509,7 +541,7 @@ OpenMciDevice(HWND hwnd, LPTSTR lpType, LPTSTR lpFileName)
|
||||||
MCIERROR mciError;
|
MCIERROR mciError;
|
||||||
MCI_STATUS_PARMS mciStatus;
|
MCI_STATUS_PARMS mciStatus;
|
||||||
MCI_OPEN_PARMS mciOpen;
|
MCI_OPEN_PARMS mciOpen;
|
||||||
DWORD dwFlags = MCI_OPEN_ELEMENT | MCI_WAIT;
|
DWORD dwFlags = MCI_WAIT;
|
||||||
LPTSTR lpStr;
|
LPTSTR lpStr;
|
||||||
|
|
||||||
if (wDeviceId)
|
if (wDeviceId)
|
||||||
|
@ -524,6 +556,9 @@ OpenMciDevice(HWND hwnd, LPTSTR lpType, LPTSTR lpFileName)
|
||||||
if (lpType)
|
if (lpType)
|
||||||
dwFlags |= MCI_OPEN_TYPE;
|
dwFlags |= MCI_OPEN_TYPE;
|
||||||
|
|
||||||
|
if (lpFileName)
|
||||||
|
dwFlags |= MCI_OPEN_ELEMENT;
|
||||||
|
|
||||||
mciError = mciSendCommand(0, MCI_OPEN, dwFlags, (DWORD_PTR)&mciOpen);
|
mciError = mciSendCommand(0, MCI_OPEN, dwFlags, (DWORD_PTR)&mciOpen);
|
||||||
if (mciError != 0)
|
if (mciError != 0)
|
||||||
return mciError;
|
return mciError;
|
||||||
|
@ -562,11 +597,16 @@ OpenMciDevice(HWND hwnd, LPTSTR lpType, LPTSTR lpFileName)
|
||||||
|
|
||||||
/* NOTE: Everything above this line may be done instead in OpenMediaFile() */
|
/* NOTE: Everything above this line may be done instead in OpenMediaFile() */
|
||||||
|
|
||||||
lpStr = _tcsrchr(lpFileName, _T('\\'));
|
if (lpFileName)
|
||||||
if (lpStr) // Get only the file name (skip the last path separator)
|
{
|
||||||
lpStr++;
|
lpStr = _tcsrchr(lpFileName, _T('\\'));
|
||||||
|
if (lpStr) // Get only the file name (skip the last path separator)
|
||||||
|
lpStr++;
|
||||||
|
else
|
||||||
|
lpStr = lpFileName;
|
||||||
|
}
|
||||||
else
|
else
|
||||||
lpStr = lpFileName;
|
lpStr = lpType;
|
||||||
|
|
||||||
StringCbCopy(szCurrentFile, sizeof(szCurrentFile), lpStr);
|
StringCbCopy(szCurrentFile, sizeof(szCurrentFile), lpStr);
|
||||||
|
|
||||||
|
@ -852,7 +892,7 @@ CloseMediaFile(HWND hwnd)
|
||||||
}
|
}
|
||||||
|
|
||||||
static VOID
|
static VOID
|
||||||
OpenMediaFile(HWND hwnd, LPTSTR lpFileName)
|
OpenMediaFile(HWND hwnd, LPTSTR lpFileName, LPTSTR lpType)
|
||||||
{
|
{
|
||||||
MCIERROR mciError;
|
MCIERROR mciError;
|
||||||
|
|
||||||
|
@ -862,7 +902,7 @@ OpenMediaFile(HWND hwnd, LPTSTR lpFileName)
|
||||||
if (wDeviceId)
|
if (wDeviceId)
|
||||||
CloseMediaFile(hwnd);
|
CloseMediaFile(hwnd);
|
||||||
|
|
||||||
mciError = OpenMciDevice(hwnd, NULL, lpFileName);
|
mciError = OpenMciDevice(hwnd, lpType, lpFileName);
|
||||||
if (mciError != 0)
|
if (mciError != 0)
|
||||||
{
|
{
|
||||||
ShowMCIError(hwnd, mciError);
|
ShowMCIError(hwnd, mciError);
|
||||||
|
@ -872,8 +912,45 @@ OpenMediaFile(HWND hwnd, LPTSTR lpFileName)
|
||||||
StartPlayback(hwnd);
|
StartPlayback(hwnd);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static DWORD
|
||||||
|
InsertDeviceMenuItem(HMENU hMenu, UINT uItem, BOOL fByPosition, UINT uItemID, DWORD dwDeviceIndex)
|
||||||
|
{
|
||||||
|
MENUITEMINFO lpmii;
|
||||||
|
MCIERROR mciError;
|
||||||
|
TCHAR szDeviceName[MAX_MCISTR];
|
||||||
|
TCHAR szFriendlyName[MAX_MCISTR];
|
||||||
|
|
||||||
|
mciError = GetDeviceName(dwDeviceIndex, szDeviceName, sizeof(szDeviceName));
|
||||||
|
if (mciError)
|
||||||
|
{
|
||||||
|
return mciError;
|
||||||
|
}
|
||||||
|
|
||||||
|
mciError = GetDeviceFriendlyName(szDeviceName, szFriendlyName, sizeof(szFriendlyName));
|
||||||
|
if (mciError)
|
||||||
|
{
|
||||||
|
return mciError;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (DeviceUsesFiles(szDeviceName))
|
||||||
|
{
|
||||||
|
StringCbCat(szFriendlyName, sizeof(szFriendlyName), _T("..."));
|
||||||
|
}
|
||||||
|
|
||||||
|
ZeroMemory(&lpmii, sizeof(MENUITEMINFO));
|
||||||
|
lpmii.cbSize = sizeof(lpmii);
|
||||||
|
lpmii.fMask = MIIM_DATA | MIIM_TYPE | MIIM_ID;
|
||||||
|
lpmii.wID = uItemID;
|
||||||
|
lpmii.fType = MF_STRING;
|
||||||
|
lpmii.dwTypeData = szFriendlyName;
|
||||||
|
lpmii.dwItemData = dwDeviceIndex;
|
||||||
|
InsertMenuItem(hMenu, uItem, fByPosition, &lpmii);
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
static VOID
|
static VOID
|
||||||
BuildFileFilter(VOID)
|
BuildFileFilterAndDeviceMenu(VOID)
|
||||||
{
|
{
|
||||||
TCHAR szDeviceName[MAX_MCISTR];
|
TCHAR szDeviceName[MAX_MCISTR];
|
||||||
TCHAR szFriendlyName[MAX_MCISTR];
|
TCHAR szFriendlyName[MAX_MCISTR];
|
||||||
|
@ -891,6 +968,7 @@ BuildFileFilter(VOID)
|
||||||
DWORD dwFilterSize;
|
DWORD dwFilterSize;
|
||||||
DWORD dwDeviceSize;
|
DWORD dwDeviceSize;
|
||||||
DWORD dwExtensionLen;
|
DWORD dwExtensionLen;
|
||||||
|
DWORD dwPosition = 0;
|
||||||
DWORD i;
|
DWORD i;
|
||||||
DWORD j;
|
DWORD j;
|
||||||
UINT uSizeRemain;
|
UINT uSizeRemain;
|
||||||
|
@ -953,6 +1031,10 @@ BuildFileFilter(VOID)
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Insert a menu item under the "Device" menu for every found MCI device */
|
||||||
|
InsertDeviceMenuItem(GetSubMenu(hMainMenu, 3), dwPosition, TRUE, IDM_DEVICE_FIRST + dwPosition, j);
|
||||||
|
dwPosition++;
|
||||||
|
|
||||||
/* Copy the default extension list, that may be overwritten after... */
|
/* Copy the default extension list, that may be overwritten after... */
|
||||||
StringCbCopy(szExtensionList, dwMaskLen * sizeof(TCHAR), szDefaultExtension);
|
StringCbCopy(szExtensionList, dwMaskLen * sizeof(TCHAR), szDefaultExtension);
|
||||||
|
|
||||||
|
@ -1065,7 +1147,7 @@ CleanupFileFilter(VOID)
|
||||||
}
|
}
|
||||||
|
|
||||||
static VOID
|
static VOID
|
||||||
OpenFileDialog(HWND hwnd)
|
OpenFileDialog(HWND hwnd, DWORD dwFilterIndex, LPTSTR lpType)
|
||||||
{
|
{
|
||||||
OPENFILENAME OpenFileName;
|
OPENFILENAME OpenFileName;
|
||||||
TCHAR szFile[MAX_PATH + 1] = _T("");
|
TCHAR szFile[MAX_PATH + 1] = _T("");
|
||||||
|
@ -1087,11 +1169,46 @@ OpenFileDialog(HWND hwnd)
|
||||||
OpenFileName.lpstrInitialDir = szCurrentDir;
|
OpenFileName.lpstrInitialDir = szCurrentDir;
|
||||||
OpenFileName.Flags = OFN_FILEMUSTEXIST | OFN_PATHMUSTEXIST | OFN_HIDEREADONLY | OFN_SHAREAWARE;
|
OpenFileName.Flags = OFN_FILEMUSTEXIST | OFN_PATHMUSTEXIST | OFN_HIDEREADONLY | OFN_SHAREAWARE;
|
||||||
OpenFileName.lpstrDefExt = _T("\0");
|
OpenFileName.lpstrDefExt = _T("\0");
|
||||||
|
OpenFileName.nFilterIndex = dwFilterIndex;
|
||||||
|
|
||||||
if (!GetOpenFileName(&OpenFileName))
|
if (!GetOpenFileName(&OpenFileName))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
OpenMediaFile(hwnd, OpenFileName.lpstrFile);
|
OpenMediaFile(hwnd, OpenFileName.lpstrFile, lpType);
|
||||||
|
}
|
||||||
|
|
||||||
|
static VOID
|
||||||
|
HandleDeviceMenuItem(HWND hwnd, UINT uItem)
|
||||||
|
{
|
||||||
|
MENUITEMINFO lpmii;
|
||||||
|
TCHAR szDeviceName[MAX_MCISTR];
|
||||||
|
MCIERROR mciError;
|
||||||
|
|
||||||
|
ZeroMemory(&lpmii, sizeof(MENUITEMINFO));
|
||||||
|
lpmii.cbSize = sizeof(lpmii);
|
||||||
|
lpmii.fMask = MIIM_DATA;
|
||||||
|
GetMenuItemInfo(hMainMenu, uItem, FALSE, &lpmii);
|
||||||
|
|
||||||
|
mciError = GetDeviceName(lpmii.dwItemData, szDeviceName, sizeof(szDeviceName));
|
||||||
|
if (mciError)
|
||||||
|
{
|
||||||
|
ShowMCIError(hwnd, mciError);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (DeviceUsesFiles(szDeviceName))
|
||||||
|
{
|
||||||
|
OpenFileDialog(hwnd, uItem - IDM_DEVICE_FIRST + 1, szDeviceName);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
mciError = OpenMciDevice(hwnd, szDeviceName, NULL);
|
||||||
|
if (mciError)
|
||||||
|
{
|
||||||
|
ShowMCIError(hwnd, mciError);
|
||||||
|
}
|
||||||
|
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
LRESULT CALLBACK
|
LRESULT CALLBACK
|
||||||
|
@ -1114,7 +1231,7 @@ MainWndProc(HWND hwnd, UINT Message, WPARAM wParam, LPARAM lParam)
|
||||||
drophandle = (HDROP)wParam;
|
drophandle = (HDROP)wParam;
|
||||||
DragQueryFile(drophandle, 0, droppedfile, ARRAYSIZE(droppedfile));
|
DragQueryFile(drophandle, 0, droppedfile, ARRAYSIZE(droppedfile));
|
||||||
DragFinish(drophandle);
|
DragFinish(drophandle);
|
||||||
OpenMediaFile(hwnd, droppedfile);
|
OpenMediaFile(hwnd, droppedfile, NULL);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1241,6 +1358,12 @@ MainWndProc(HWND hwnd, UINT Message, WPARAM wParam, LPARAM lParam)
|
||||||
|
|
||||||
case WM_COMMAND:
|
case WM_COMMAND:
|
||||||
{
|
{
|
||||||
|
if (LOWORD(wParam) >= IDM_DEVICE_FIRST)
|
||||||
|
{
|
||||||
|
HandleDeviceMenuItem(hwnd, LOWORD(wParam));
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
switch (LOWORD(wParam))
|
switch (LOWORD(wParam))
|
||||||
{
|
{
|
||||||
case IDC_PLAY:
|
case IDC_PLAY:
|
||||||
|
@ -1249,7 +1372,7 @@ MainWndProc(HWND hwnd, UINT Message, WPARAM wParam, LPARAM lParam)
|
||||||
if (wDeviceId)
|
if (wDeviceId)
|
||||||
TogglePlaybackState(hwnd);
|
TogglePlaybackState(hwnd);
|
||||||
else
|
else
|
||||||
OpenFileDialog(hwnd);
|
OpenFileDialog(hwnd, 1, NULL);
|
||||||
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
@ -1276,7 +1399,7 @@ MainWndProc(HWND hwnd, UINT Message, WPARAM wParam, LPARAM lParam)
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case IDM_OPEN_FILE:
|
case IDM_OPEN_FILE:
|
||||||
OpenFileDialog(hwnd);
|
OpenFileDialog(hwnd, 1, NULL);
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
case IDM_CLOSE_FILE:
|
case IDM_CLOSE_FILE:
|
||||||
|
@ -1383,7 +1506,7 @@ _tWinMain(HINSTANCE hInst, HINSTANCE hPrevInst, LPTSTR lpCmdLine, INT nCmdShow)
|
||||||
|
|
||||||
hAccel = LoadAccelerators(hInstance, MAKEINTRESOURCE(ID_ACCELERATORS));
|
hAccel = LoadAccelerators(hInstance, MAKEINTRESOURCE(ID_ACCELERATORS));
|
||||||
|
|
||||||
BuildFileFilter();
|
BuildFileFilterAndDeviceMenu();
|
||||||
|
|
||||||
DragAcceptFiles(hwnd, TRUE);
|
DragAcceptFiles(hwnd, TRUE);
|
||||||
|
|
||||||
|
@ -1399,7 +1522,7 @@ _tWinMain(HINSTANCE hInst, HINSTANCE hPrevInst, LPTSTR lpCmdLine, INT nCmdShow)
|
||||||
ShowWindow(hwnd, SW_SHOW);
|
ShowWindow(hwnd, SW_SHOW);
|
||||||
UpdateWindow(hwnd);
|
UpdateWindow(hwnd);
|
||||||
|
|
||||||
OpenMediaFile(hwnd, lpCmdLine);
|
OpenMediaFile(hwnd, lpCmdLine, NULL);
|
||||||
|
|
||||||
/* Message Loop */
|
/* Message Loop */
|
||||||
while (GetMessage(&msg, NULL, 0, 0))
|
while (GetMessage(&msg, NULL, 0, 0))
|
||||||
|
|
|
@ -52,6 +52,9 @@
|
||||||
#define IDM_REPEAT 1006
|
#define IDM_REPEAT 1006
|
||||||
#define IDM_SWITCHVIEW 1007
|
#define IDM_SWITCHVIEW 1007
|
||||||
|
|
||||||
|
/* The device specific items in the device menu start here */
|
||||||
|
#define IDM_DEVICE_FIRST 10000
|
||||||
|
|
||||||
/* ToolBar Icons */
|
/* ToolBar Icons */
|
||||||
#define TBICON_PLAY 0
|
#define TBICON_PLAY 0
|
||||||
#define TBICON_STOP 1
|
#define TBICON_STOP 1
|
||||||
|
|
Loading…
Reference in a new issue