mirror of
https://github.com/reactos/reactos.git
synced 2024-06-27 00:11:35 +00:00
[MMSYS] Multimedia Control Panel diverse fixes (#4572)
- Use Unicode (WCHAR) instead of TCHAR - Code formatting - Use string safe functions - Close handles after calling `CreateProcess` - Save sound path as `REG_EXPAND_SZ` only if the path contains '%' character, like Windows does - Fix `wcsdup` leaks Reviewed-by: Mark Jansen <mark.jansen@reactos.org> Reviewed-by: Hermès Bélusca-Maïto <hermes.belusca-maito@reactos.org> Reviewed-by: Katayama Hirofumi MZ <katayama.hirofumi.mz@gmail.com> Reviewed-by: Stanislav Motylkov <x86corez@gmail.com>
This commit is contained in:
parent
67f7971fa2
commit
781c247bd3
|
@ -26,15 +26,15 @@ VOID
|
||||||
InitAudioDlg(HWND hwnd, PGLOBAL_DATA pGlobalData)
|
InitAudioDlg(HWND hwnd, PGLOBAL_DATA pGlobalData)
|
||||||
{
|
{
|
||||||
WAVEOUTCAPSW waveOutputPaps;
|
WAVEOUTCAPSW waveOutputPaps;
|
||||||
WAVEINCAPS waveInputPaps;
|
WAVEINCAPSW waveInputPaps;
|
||||||
MIDIOUTCAPS midiOutCaps;
|
MIDIOUTCAPSW midiOutCaps;
|
||||||
TCHAR szNoDevices[256];
|
WCHAR szNoDevices[256];
|
||||||
UINT DevsNum;
|
UINT DevsNum;
|
||||||
UINT uIndex;
|
UINT uIndex;
|
||||||
HWND hCB;
|
HWND hCB;
|
||||||
LRESULT Res;
|
LRESULT Res;
|
||||||
|
|
||||||
LoadString(hApplet, IDS_NO_DEVICES, szNoDevices, _countof(szNoDevices));
|
LoadStringW(hApplet, IDS_NO_DEVICES, szNoDevices, _countof(szNoDevices));
|
||||||
|
|
||||||
// Init sound playback devices list
|
// Init sound playback devices list
|
||||||
hCB = GetDlgItem(hwnd, IDC_DEVICE_PLAY_LIST);
|
hCB = GetDlgItem(hwnd, IDC_DEVICE_PLAY_LIST);
|
||||||
|
@ -42,8 +42,8 @@ InitAudioDlg(HWND hwnd, PGLOBAL_DATA pGlobalData)
|
||||||
DevsNum = waveOutGetNumDevs();
|
DevsNum = waveOutGetNumDevs();
|
||||||
if (DevsNum < 1)
|
if (DevsNum < 1)
|
||||||
{
|
{
|
||||||
Res = SendMessage(hCB, CB_ADDSTRING, 0, (LPARAM)szNoDevices);
|
Res = SendMessageW(hCB, CB_ADDSTRING, 0, (LPARAM)szNoDevices);
|
||||||
SendMessage(hCB, CB_SETCURSEL, (WPARAM) Res, 0);
|
SendMessageW(hCB, CB_SETCURSEL, (WPARAM)Res, 0);
|
||||||
pGlobalData->bNoAudioOut = TRUE;
|
pGlobalData->bNoAudioOut = TRUE;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
@ -56,7 +56,7 @@ InitAudioDlg(HWND hwnd, PGLOBAL_DATA pGlobalData)
|
||||||
if (RegOpenKeyExW(HKEY_CURRENT_USER, L"Software\\Microsoft\\Multimedia\\Sound Mapper", 0, KEY_READ, &hKey) == ERROR_SUCCESS)
|
if (RegOpenKeyExW(HKEY_CURRENT_USER, L"Software\\Microsoft\\Multimedia\\Sound Mapper", 0, KEY_READ, &hKey) == ERROR_SUCCESS)
|
||||||
{
|
{
|
||||||
RegQueryValueExW(hKey, L"Playback", NULL, NULL, (LPBYTE)DefaultDevice, &dwSize);
|
RegQueryValueExW(hKey, L"Playback", NULL, NULL, (LPBYTE)DefaultDevice, &dwSize);
|
||||||
DefaultDevice[MAX_PATH-1] = L'\0';
|
DefaultDevice[_countof(DefaultDevice) - 1] = UNICODE_NULL;
|
||||||
RegCloseKey(hKey);
|
RegCloseKey(hKey);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -65,16 +65,16 @@ InitAudioDlg(HWND hwnd, PGLOBAL_DATA pGlobalData)
|
||||||
if (waveOutGetDevCapsW(uIndex, &waveOutputPaps, sizeof(waveOutputPaps)))
|
if (waveOutGetDevCapsW(uIndex, &waveOutputPaps, sizeof(waveOutputPaps)))
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
Res = SendMessageW(hCB, CB_ADDSTRING, 0, (LPARAM) waveOutputPaps.szPname);
|
Res = SendMessageW(hCB, CB_ADDSTRING, 0, (LPARAM)waveOutputPaps.szPname);
|
||||||
|
|
||||||
if (CB_ERR != Res)
|
if (CB_ERR != Res)
|
||||||
{
|
{
|
||||||
SendMessage(hCB, CB_SETITEMDATA, Res, (LPARAM) uIndex);
|
SendMessageW(hCB, CB_SETITEMDATA, Res, (LPARAM)uIndex);
|
||||||
if (!wcsicmp(waveOutputPaps.szPname, DefaultDevice))
|
if (!_wcsicmp(waveOutputPaps.szPname, DefaultDevice))
|
||||||
DefaultIndex = Res;
|
DefaultIndex = Res;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
SendMessage(hCB, CB_SETCURSEL, (WPARAM) DefaultIndex, 0);
|
SendMessageW(hCB, CB_SETCURSEL, (WPARAM)DefaultIndex, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Init sound recording devices list
|
// Init sound recording devices list
|
||||||
|
@ -83,8 +83,8 @@ InitAudioDlg(HWND hwnd, PGLOBAL_DATA pGlobalData)
|
||||||
DevsNum = waveInGetNumDevs();
|
DevsNum = waveInGetNumDevs();
|
||||||
if (DevsNum < 1)
|
if (DevsNum < 1)
|
||||||
{
|
{
|
||||||
Res = SendMessage(hCB, CB_ADDSTRING, 0, (LPARAM)szNoDevices);
|
Res = SendMessageW(hCB, CB_ADDSTRING, 0, (LPARAM)szNoDevices);
|
||||||
SendMessage(hCB, CB_SETCURSEL, (WPARAM) Res, 0);
|
SendMessageW(hCB, CB_SETCURSEL, (WPARAM)Res, 0);
|
||||||
pGlobalData->bNoAudioIn = TRUE;
|
pGlobalData->bNoAudioIn = TRUE;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
@ -97,26 +97,26 @@ InitAudioDlg(HWND hwnd, PGLOBAL_DATA pGlobalData)
|
||||||
if (RegOpenKeyExW(HKEY_CURRENT_USER, L"Software\\Microsoft\\Multimedia\\Sound Mapper", 0, KEY_READ, &hKey) == ERROR_SUCCESS)
|
if (RegOpenKeyExW(HKEY_CURRENT_USER, L"Software\\Microsoft\\Multimedia\\Sound Mapper", 0, KEY_READ, &hKey) == ERROR_SUCCESS)
|
||||||
{
|
{
|
||||||
RegQueryValueExW(hKey, L"Record", NULL, NULL, (LPBYTE)DefaultDevice, &dwSize);
|
RegQueryValueExW(hKey, L"Record", NULL, NULL, (LPBYTE)DefaultDevice, &dwSize);
|
||||||
DefaultDevice[MAX_PATH-1] = L'\0';
|
DefaultDevice[_countof(DefaultDevice) - 1] = UNICODE_NULL;
|
||||||
RegCloseKey(hKey);
|
RegCloseKey(hKey);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
for (uIndex = 0; uIndex < DevsNum; uIndex++)
|
for (uIndex = 0; uIndex < DevsNum; uIndex++)
|
||||||
{
|
{
|
||||||
if (waveInGetDevCaps(uIndex, &waveInputPaps, sizeof(waveInputPaps)))
|
if (waveInGetDevCapsW(uIndex, &waveInputPaps, sizeof(waveInputPaps)))
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
Res = SendMessage(hCB, CB_ADDSTRING, 0, (LPARAM) waveInputPaps.szPname);
|
Res = SendMessageW(hCB, CB_ADDSTRING, 0, (LPARAM)waveInputPaps.szPname);
|
||||||
|
|
||||||
if (CB_ERR != Res)
|
if (CB_ERR != Res)
|
||||||
{
|
{
|
||||||
SendMessage(hCB, CB_SETITEMDATA, Res, (LPARAM) uIndex);
|
SendMessageW(hCB, CB_SETITEMDATA, Res, (LPARAM)uIndex);
|
||||||
if (!wcsicmp(waveInputPaps.szPname, DefaultDevice))
|
if (!_wcsicmp(waveInputPaps.szPname, DefaultDevice))
|
||||||
DefaultIndex = Res;
|
DefaultIndex = Res;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
SendMessage(hCB, CB_SETCURSEL, (WPARAM) DefaultIndex, 0);
|
SendMessageW(hCB, CB_SETCURSEL, (WPARAM)DefaultIndex, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Init MIDI devices list
|
// Init MIDI devices list
|
||||||
|
@ -125,8 +125,8 @@ InitAudioDlg(HWND hwnd, PGLOBAL_DATA pGlobalData)
|
||||||
DevsNum = midiOutGetNumDevs();
|
DevsNum = midiOutGetNumDevs();
|
||||||
if (DevsNum < 1)
|
if (DevsNum < 1)
|
||||||
{
|
{
|
||||||
Res = SendMessage(hCB, CB_ADDSTRING, 0, (LPARAM)szNoDevices);
|
Res = SendMessageW(hCB, CB_ADDSTRING, 0, (LPARAM)szNoDevices);
|
||||||
SendMessage(hCB, CB_SETCURSEL, (WPARAM) Res, 0);
|
SendMessageW(hCB, CB_SETCURSEL, (WPARAM)Res, 0);
|
||||||
pGlobalData->bNoMIDIOut = TRUE;
|
pGlobalData->bNoMIDIOut = TRUE;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
@ -139,25 +139,25 @@ InitAudioDlg(HWND hwnd, PGLOBAL_DATA pGlobalData)
|
||||||
if (RegOpenKeyExW(HKEY_CURRENT_USER, L"Software\\Microsoft\\Windows\\CurrentVersion\\Multimedia\\MIDIMap", 0, KEY_READ, &hKey) == ERROR_SUCCESS)
|
if (RegOpenKeyExW(HKEY_CURRENT_USER, L"Software\\Microsoft\\Windows\\CurrentVersion\\Multimedia\\MIDIMap", 0, KEY_READ, &hKey) == ERROR_SUCCESS)
|
||||||
{
|
{
|
||||||
RegQueryValueExW(hKey, L"szPname", NULL, NULL, (LPBYTE)DefaultDevice, &dwSize);
|
RegQueryValueExW(hKey, L"szPname", NULL, NULL, (LPBYTE)DefaultDevice, &dwSize);
|
||||||
DefaultDevice[MAX_PATH-1] = L'\0';
|
DefaultDevice[_countof(DefaultDevice) - 1] = UNICODE_NULL;
|
||||||
RegCloseKey(hKey);
|
RegCloseKey(hKey);
|
||||||
}
|
}
|
||||||
|
|
||||||
for (uIndex = 0; uIndex < DevsNum; uIndex++)
|
for (uIndex = 0; uIndex < DevsNum; uIndex++)
|
||||||
{
|
{
|
||||||
if (midiOutGetDevCaps(uIndex, &midiOutCaps, sizeof(midiOutCaps)))
|
if (midiOutGetDevCapsW(uIndex, &midiOutCaps, sizeof(midiOutCaps)))
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
Res = SendMessage(hCB, CB_ADDSTRING, 0, (LPARAM) midiOutCaps.szPname);
|
Res = SendMessageW(hCB, CB_ADDSTRING, 0, (LPARAM)midiOutCaps.szPname);
|
||||||
|
|
||||||
if (CB_ERR != Res)
|
if (CB_ERR != Res)
|
||||||
{
|
{
|
||||||
SendMessage(hCB, CB_SETITEMDATA, Res, (LPARAM) uIndex);
|
SendMessageW(hCB, CB_SETITEMDATA, Res, (LPARAM)uIndex);
|
||||||
if (!wcsicmp(midiOutCaps.szPname, DefaultDevice))
|
if (!_wcsicmp(midiOutCaps.szPname, DefaultDevice))
|
||||||
DefaultIndex = Res;
|
DefaultIndex = Res;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
SendMessage(hCB, CB_SETCURSEL, (WPARAM) DefaultIndex, 0);
|
SendMessageW(hCB, CB_SETCURSEL, (WPARAM)DefaultIndex, 0);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -165,7 +165,7 @@ VOID
|
||||||
UpdateRegistryString(HWND hwnd, INT ctrl, LPWSTR key, LPWSTR value)
|
UpdateRegistryString(HWND hwnd, INT ctrl, LPWSTR key, LPWSTR value)
|
||||||
{
|
{
|
||||||
HWND hwndCombo = GetDlgItem(hwnd, ctrl);
|
HWND hwndCombo = GetDlgItem(hwnd, ctrl);
|
||||||
INT CurSel = SendMessage(hwndCombo, CB_GETCURSEL, 0, 0);
|
INT CurSel = SendMessageW(hwndCombo, CB_GETCURSEL, 0, 0);
|
||||||
UINT TextLen;
|
UINT TextLen;
|
||||||
WCHAR SelectedDevice[MAX_PATH] = {0};
|
WCHAR SelectedDevice[MAX_PATH] = {0};
|
||||||
HKEY hKey;
|
HKEY hKey;
|
||||||
|
@ -183,7 +183,7 @@ UpdateRegistryString(HWND hwnd, INT ctrl, LPWSTR key, LPWSTR value)
|
||||||
if (RegCreateKeyExW(HKEY_CURRENT_USER, key, 0, NULL, REG_OPTION_NON_VOLATILE, KEY_WRITE, NULL, &hKey, NULL) != ERROR_SUCCESS)
|
if (RegCreateKeyExW(HKEY_CURRENT_USER, key, 0, NULL, REG_OPTION_NON_VOLATILE, KEY_WRITE, NULL, &hKey, NULL) != ERROR_SUCCESS)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
RegSetValueExW(hKey, value, 0, REG_SZ, (BYTE *)SelectedDevice, (wcslen(SelectedDevice) + 1) * sizeof(WCHAR));
|
RegSetValueExW(hKey, value, 0, REG_SZ, (BYTE*)SelectedDevice, (wcslen(SelectedDevice) + 1) * sizeof(WCHAR));
|
||||||
RegCloseKey(hKey);
|
RegCloseKey(hKey);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -221,12 +221,12 @@ GetDevNum(HWND hControl, DWORD Id)
|
||||||
int iCurSel;
|
int iCurSel;
|
||||||
UINT DevNum;
|
UINT DevNum;
|
||||||
|
|
||||||
iCurSel = SendMessage(hControl, CB_GETCURSEL, 0, 0);
|
iCurSel = SendMessageW(hControl, CB_GETCURSEL, 0, 0);
|
||||||
|
|
||||||
if (iCurSel == CB_ERR)
|
if (iCurSel == CB_ERR)
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
DevNum = (UINT) SendMessage(hControl, CB_GETITEMDATA, iCurSel, 0);
|
DevNum = (UINT)SendMessageW(hControl, CB_GETITEMDATA, iCurSel, 0);
|
||||||
if (DevNum == (UINT) CB_ERR)
|
if (DevNum == (UINT) CB_ERR)
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
|
@ -245,16 +245,16 @@ AudioDlgProc(HWND hwndDlg,
|
||||||
{
|
{
|
||||||
PGLOBAL_DATA pGlobalData;
|
PGLOBAL_DATA pGlobalData;
|
||||||
|
|
||||||
pGlobalData = (PGLOBAL_DATA)GetWindowLongPtr(hwndDlg, DWLP_USER);
|
pGlobalData = (PGLOBAL_DATA)GetWindowLongPtrW(hwndDlg, DWLP_USER);
|
||||||
|
|
||||||
switch(uMsg)
|
switch (uMsg)
|
||||||
{
|
{
|
||||||
case WM_INITDIALOG:
|
case WM_INITDIALOG:
|
||||||
{
|
{
|
||||||
UINT NumWavOut = waveOutGetNumDevs();
|
UINT NumWavOut = waveOutGetNumDevs();
|
||||||
|
|
||||||
pGlobalData = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(GLOBAL_DATA));
|
pGlobalData = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(GLOBAL_DATA));
|
||||||
SetWindowLongPtr(hwndDlg, DWLP_USER, (LONG_PTR)pGlobalData);
|
SetWindowLongPtrW(hwndDlg, DWLP_USER, (LONG_PTR)pGlobalData);
|
||||||
|
|
||||||
if (!pGlobalData)
|
if (!pGlobalData)
|
||||||
break;
|
break;
|
||||||
|
@ -300,18 +300,18 @@ AudioDlgProc(HWND hwndDlg,
|
||||||
|
|
||||||
case WM_COMMAND:
|
case WM_COMMAND:
|
||||||
{
|
{
|
||||||
STARTUPINFO si;
|
STARTUPINFOW si;
|
||||||
PROCESS_INFORMATION pi;
|
PROCESS_INFORMATION pi;
|
||||||
WCHAR szPath[MAX_PATH];
|
WCHAR szPath[MAX_PATH];
|
||||||
|
|
||||||
if (!pGlobalData)
|
if (!pGlobalData)
|
||||||
break;
|
break;
|
||||||
|
|
||||||
switch(LOWORD(wParam))
|
switch (LOWORD(wParam))
|
||||||
{
|
{
|
||||||
case IDC_VOLUME1_BTN:
|
case IDC_VOLUME1_BTN:
|
||||||
{
|
{
|
||||||
wsprintf(szPath, L"sndvol32.exe -d %d",
|
StringCchPrintfW(szPath, _countof(szPath), L"sndvol32.exe -d %d",
|
||||||
GetDevNum(GetDlgItem(hwndDlg, IDC_DEVICE_PLAY_LIST), MIXER_OBJECTF_WAVEOUT));
|
GetDevNum(GetDlgItem(hwndDlg, IDC_DEVICE_PLAY_LIST), MIXER_OBJECTF_WAVEOUT));
|
||||||
|
|
||||||
ZeroMemory(&si, sizeof(si));
|
ZeroMemory(&si, sizeof(si));
|
||||||
|
@ -319,7 +319,11 @@ AudioDlgProc(HWND hwndDlg,
|
||||||
si.dwFlags = STARTF_USESHOWWINDOW;
|
si.dwFlags = STARTF_USESHOWWINDOW;
|
||||||
si.wShowWindow = SW_SHOW;
|
si.wShowWindow = SW_SHOW;
|
||||||
|
|
||||||
CreateProcess(NULL, szPath, NULL, NULL, FALSE, 0, NULL, NULL, &si, &pi);
|
if (CreateProcessW(NULL, szPath, NULL, NULL, FALSE, 0, NULL, NULL, &si, &pi))
|
||||||
|
{
|
||||||
|
CloseHandle(pi.hProcess);
|
||||||
|
CloseHandle(pi.hThread);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
@ -331,7 +335,7 @@ AudioDlgProc(HWND hwndDlg,
|
||||||
|
|
||||||
case IDC_VOLUME2_BTN:
|
case IDC_VOLUME2_BTN:
|
||||||
{
|
{
|
||||||
wsprintf(szPath, L"sndvol32.exe -r -d %d",
|
StringCchPrintfW(szPath, _countof(szPath), L"sndvol32.exe -r -d %d",
|
||||||
GetDevNum(GetDlgItem(hwndDlg, IDC_DEVICE_REC_LIST), MIXER_OBJECTF_WAVEIN));
|
GetDevNum(GetDlgItem(hwndDlg, IDC_DEVICE_REC_LIST), MIXER_OBJECTF_WAVEIN));
|
||||||
|
|
||||||
ZeroMemory(&si, sizeof(si));
|
ZeroMemory(&si, sizeof(si));
|
||||||
|
@ -339,7 +343,11 @@ AudioDlgProc(HWND hwndDlg,
|
||||||
si.dwFlags = STARTF_USESHOWWINDOW;
|
si.dwFlags = STARTF_USESHOWWINDOW;
|
||||||
si.wShowWindow = SW_SHOW;
|
si.wShowWindow = SW_SHOW;
|
||||||
|
|
||||||
CreateProcess(NULL, szPath, NULL, NULL, FALSE, 0, NULL, NULL, &si, &pi);
|
if (CreateProcessW(NULL, szPath, NULL, NULL, FALSE, 0, NULL, NULL, &si, &pi))
|
||||||
|
{
|
||||||
|
CloseHandle(pi.hProcess);
|
||||||
|
CloseHandle(pi.hThread);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
@ -351,7 +359,7 @@ AudioDlgProc(HWND hwndDlg,
|
||||||
|
|
||||||
case IDC_VOLUME3_BTN:
|
case IDC_VOLUME3_BTN:
|
||||||
{
|
{
|
||||||
wsprintf(szPath, L"sndvol32.exe -d %d",
|
StringCchPrintfW(szPath, _countof(szPath), L"sndvol32.exe -d %d",
|
||||||
GetDevNum(GetDlgItem(hwndDlg, IDC_DEVICE_MIDI_LIST), MIXER_OBJECTF_MIDIOUT));
|
GetDevNum(GetDlgItem(hwndDlg, IDC_DEVICE_MIDI_LIST), MIXER_OBJECTF_MIDIOUT));
|
||||||
|
|
||||||
ZeroMemory(&si, sizeof(si));
|
ZeroMemory(&si, sizeof(si));
|
||||||
|
@ -359,7 +367,11 @@ AudioDlgProc(HWND hwndDlg,
|
||||||
si.dwFlags = STARTF_USESHOWWINDOW;
|
si.dwFlags = STARTF_USESHOWWINDOW;
|
||||||
si.wShowWindow = SW_SHOW;
|
si.wShowWindow = SW_SHOW;
|
||||||
|
|
||||||
CreateProcess(NULL, szPath, NULL, NULL, FALSE, 0, NULL, NULL, &si, &pi);
|
if (CreateProcessW(NULL, szPath, NULL, NULL, FALSE, 0, NULL, NULL, &si, &pi))
|
||||||
|
{
|
||||||
|
CloseHandle(pi.hProcess);
|
||||||
|
CloseHandle(pi.hThread);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
|
|
@ -33,14 +33,14 @@ typedef struct
|
||||||
LPWSTR DefaultName;
|
LPWSTR DefaultName;
|
||||||
UINT LocalizedResId;
|
UINT LocalizedResId;
|
||||||
LPWSTR FileName;
|
LPWSTR FileName;
|
||||||
}EVENT_LABEL_ITEM;
|
} EVENT_LABEL_ITEM;
|
||||||
|
|
||||||
typedef struct
|
typedef struct
|
||||||
{
|
{
|
||||||
LPWSTR LabelName;
|
LPWSTR LabelName;
|
||||||
LPWSTR DefaultName;
|
LPWSTR DefaultName;
|
||||||
UINT IconId;
|
UINT IconId;
|
||||||
}SYSTEM_SCHEME_ITEM;
|
} SYSTEM_SCHEME_ITEM;
|
||||||
|
|
||||||
static EVENT_LABEL_ITEM EventLabels[] =
|
static EVENT_LABEL_ITEM EventLabels[] =
|
||||||
{
|
{
|
||||||
|
@ -89,12 +89,12 @@ DeviceCreateHardwarePageEx(HWND hWndParent,
|
||||||
UINT uNumberOfGuids,
|
UINT uNumberOfGuids,
|
||||||
HWPAGE_DISPLAYMODE DisplayMode);
|
HWPAGE_DISPLAYMODE DisplayMode);
|
||||||
|
|
||||||
typedef BOOL (WINAPI *UpdateDriverForPlugAndPlayDevicesProto)(IN OPTIONAL HWND hwndParent,
|
typedef BOOL (WINAPI *UpdateDriverForPlugAndPlayDevicesProto)(
|
||||||
IN LPCTSTR HardwareId,
|
_In_opt_ HWND hwndParent,
|
||||||
IN LPCTSTR FullInfPath,
|
_In_ LPCWSTR HardwareId,
|
||||||
IN DWORD InstallFlags,
|
_In_ LPCWSTR FullInfPath,
|
||||||
OUT OPTIONAL PBOOL bRebootRequired
|
_In_ DWORD InstallFlags,
|
||||||
);
|
_Out_opt_ PBOOL bRebootRequired);
|
||||||
|
|
||||||
#define UPDATEDRIVERFORPLUGANDPLAYDEVICES "UpdateDriverForPlugAndPlayDevicesW"
|
#define UPDATEDRIVERFORPLUGANDPLAYDEVICES "UpdateDriverForPlugAndPlayDevicesW"
|
||||||
#define NUM_APPLETS (1)
|
#define NUM_APPLETS (1)
|
||||||
|
@ -210,14 +210,14 @@ InstallSystemSoundLabels(HKEY hKey)
|
||||||
{
|
{
|
||||||
if (RegCreateKeyExW(hKey, EventLabels[i].LabelName, 0, NULL, REG_OPTION_NON_VOLATILE, KEY_ALL_ACCESS, NULL, &hSubKey, NULL) == ERROR_SUCCESS)
|
if (RegCreateKeyExW(hKey, EventLabels[i].LabelName, 0, NULL, REG_OPTION_NON_VOLATILE, KEY_ALL_ACCESS, NULL, &hSubKey, NULL) == ERROR_SUCCESS)
|
||||||
{
|
{
|
||||||
RegSetValueExW(hSubKey, NULL, 0, REG_SZ, (LPBYTE)EventLabels[i].DefaultName, (wcslen(EventLabels[i].DefaultName)+1) * sizeof(WCHAR));
|
RegSetValueExW(hSubKey, NULL, 0, REG_SZ, (LPBYTE)EventLabels[i].DefaultName, (wcslen(EventLabels[i].DefaultName) + 1) * sizeof(WCHAR));
|
||||||
swprintf(Buffer, L"@mmsys.cpl,-%u", EventLabels[i].LocalizedResId);
|
StringCchPrintfW(Buffer, _countof(Buffer), L"@mmsys.cpl,-%u", EventLabels[i].LocalizedResId);
|
||||||
RegSetValueExW(hSubKey, L"DispFileName", 0, REG_SZ, (LPBYTE)Buffer, (wcslen(Buffer)+1) * sizeof(WCHAR));
|
RegSetValueExW(hSubKey, L"DispFileName", 0, REG_SZ, (LPBYTE)Buffer, (wcslen(Buffer) + 1) * sizeof(WCHAR));
|
||||||
|
|
||||||
RegCloseKey(hSubKey);
|
RegCloseKey(hSubKey);
|
||||||
}
|
}
|
||||||
i++;
|
i++;
|
||||||
}while(EventLabels[i].LabelName);
|
} while (EventLabels[i].LabelName);
|
||||||
}
|
}
|
||||||
|
|
||||||
VOID
|
VOID
|
||||||
|
@ -230,11 +230,11 @@ InstallSystemSoundSchemeNames(HKEY hKey)
|
||||||
{
|
{
|
||||||
if (RegCreateKeyExW(hKey, SystemSchemes[i].LabelName, 0, NULL, REG_OPTION_NON_VOLATILE, KEY_ALL_ACCESS, NULL, &hSubKey, NULL) == ERROR_SUCCESS)
|
if (RegCreateKeyExW(hKey, SystemSchemes[i].LabelName, 0, NULL, REG_OPTION_NON_VOLATILE, KEY_ALL_ACCESS, NULL, &hSubKey, NULL) == ERROR_SUCCESS)
|
||||||
{
|
{
|
||||||
RegSetValueExW(hSubKey, NULL, 0, REG_SZ, (LPBYTE)SystemSchemes[i].DefaultName, (wcslen(SystemSchemes[i].DefaultName)+1) * sizeof(WCHAR));
|
RegSetValueExW(hSubKey, NULL, 0, REG_SZ, (LPBYTE)SystemSchemes[i].DefaultName, (wcslen(SystemSchemes[i].DefaultName) + 1) * sizeof(WCHAR));
|
||||||
RegCloseKey(hSubKey);
|
RegCloseKey(hSubKey);
|
||||||
}
|
}
|
||||||
i++;
|
i++;
|
||||||
}while(SystemSchemes[i].LabelName);
|
} while (SystemSchemes[i].LabelName);
|
||||||
}
|
}
|
||||||
|
|
||||||
VOID
|
VOID
|
||||||
|
@ -247,9 +247,9 @@ InstallDefaultSystemSoundScheme(HKEY hRootKey)
|
||||||
if (RegCreateKeyExW(hRootKey, L".Default", 0, NULL, REG_OPTION_NON_VOLATILE, KEY_ALL_ACCESS, NULL, &hKey, NULL) != ERROR_SUCCESS)
|
if (RegCreateKeyExW(hRootKey, L".Default", 0, NULL, REG_OPTION_NON_VOLATILE, KEY_ALL_ACCESS, NULL, &hKey, NULL) != ERROR_SUCCESS)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
RegSetValueExW(hKey, NULL, 0, REG_SZ, (LPBYTE)SystemSchemes[0].DefaultName, (wcslen(SystemSchemes[0].DefaultName)+1) * sizeof(WCHAR));
|
RegSetValueExW(hKey, NULL, 0, REG_SZ, (LPBYTE)SystemSchemes[0].DefaultName, (wcslen(SystemSchemes[0].DefaultName) + 1) * sizeof(WCHAR));
|
||||||
swprintf(Path, L"@mmsys.cpl,-%u", SystemSchemes[0].IconId);
|
StringCchPrintfW(Path, _countof(Path), L"@mmsys.cpl,-%u", SystemSchemes[0].IconId);
|
||||||
RegSetValueExW(hKey, L"DispFileName", 0, REG_SZ, (LPBYTE)Path, (wcslen(Path)+1) * sizeof(WCHAR));
|
RegSetValueExW(hKey, L"DispFileName", 0, REG_SZ, (LPBYTE)Path, (wcslen(Path) + 1) * sizeof(WCHAR));
|
||||||
|
|
||||||
do
|
do
|
||||||
{
|
{
|
||||||
|
@ -257,29 +257,29 @@ InstallDefaultSystemSoundScheme(HKEY hRootKey)
|
||||||
{
|
{
|
||||||
HKEY hScheme;
|
HKEY hScheme;
|
||||||
|
|
||||||
swprintf(Path, L"%%SystemRoot%%\\media\\%s", EventLabels[i].FileName);
|
StringCchPrintfW(Path, _countof(Path), L"%%SystemRoot%%\\media\\%s", EventLabels[i].FileName);
|
||||||
if (RegCreateKeyExW(hSubKey, L".Current", 0, NULL, REG_OPTION_NON_VOLATILE, KEY_ALL_ACCESS, NULL, &hScheme, NULL) == ERROR_SUCCESS)
|
if (RegCreateKeyExW(hSubKey, L".Current", 0, NULL, REG_OPTION_NON_VOLATILE, KEY_ALL_ACCESS, NULL, &hScheme, NULL) == ERROR_SUCCESS)
|
||||||
{
|
{
|
||||||
RegSetValueExW(hScheme, NULL, 0, REG_EXPAND_SZ, (LPBYTE)Path, (wcslen(Path)+1) * sizeof(WCHAR));
|
RegSetValueExW(hScheme, NULL, 0, REG_EXPAND_SZ, (LPBYTE)Path, (wcslen(Path) + 1) * sizeof(WCHAR));
|
||||||
RegCloseKey(hScheme);
|
RegCloseKey(hScheme);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (RegCreateKeyExW(hSubKey, L".Default", 0, NULL, REG_OPTION_NON_VOLATILE, KEY_ALL_ACCESS, NULL, &hScheme, NULL) == ERROR_SUCCESS)
|
if (RegCreateKeyExW(hSubKey, L".Default", 0, NULL, REG_OPTION_NON_VOLATILE, KEY_ALL_ACCESS, NULL, &hScheme, NULL) == ERROR_SUCCESS)
|
||||||
{
|
{
|
||||||
RegSetValueExW(hScheme, NULL, 0, REG_EXPAND_SZ, (LPBYTE)Path, (wcslen(Path)+1) * sizeof(WCHAR));
|
RegSetValueExW(hScheme, NULL, 0, REG_EXPAND_SZ, (LPBYTE)Path, (wcslen(Path) + 1) * sizeof(WCHAR));
|
||||||
RegCloseKey(hScheme);
|
RegCloseKey(hScheme);
|
||||||
}
|
}
|
||||||
RegCloseKey(hSubKey);
|
RegCloseKey(hSubKey);
|
||||||
}
|
}
|
||||||
i++;
|
i++;
|
||||||
}while(EventLabels[i].LabelName);
|
} while (EventLabels[i].LabelName);
|
||||||
|
|
||||||
RegCloseKey(hKey);
|
RegCloseKey(hKey);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
VOID
|
VOID
|
||||||
InstallSystemSoundScheme()
|
InstallSystemSoundScheme(VOID)
|
||||||
{
|
{
|
||||||
HKEY hKey, hSubKey;
|
HKEY hKey, hSubKey;
|
||||||
DWORD dwDisposition;
|
DWORD dwDisposition;
|
||||||
|
@ -310,7 +310,7 @@ InstallSystemSoundScheme()
|
||||||
if (dwDisposition & REG_CREATED_NEW_KEY)
|
if (dwDisposition & REG_CREATED_NEW_KEY)
|
||||||
{
|
{
|
||||||
// FIXME
|
// FIXME
|
||||||
RegSetValueExW(hSubKey, NULL, 0, REG_SZ, (LPBYTE)L".Default", (wcslen(L".Default")+1) * sizeof(WCHAR));
|
RegSetValueExW(hSubKey, NULL, 0, REG_SZ, (LPBYTE)L".Default", sizeof(L".Default"));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -328,7 +328,7 @@ IsSoftwareBusPnpEnumeratorInstalled()
|
||||||
GUID SWBusGuid = {STATIC_BUSID_SoftwareDeviceEnumerator};
|
GUID SWBusGuid = {STATIC_BUSID_SoftwareDeviceEnumerator};
|
||||||
PSP_DEVICE_INTERFACE_DETAIL_DATA_W DeviceInterfaceDetailData;
|
PSP_DEVICE_INTERFACE_DETAIL_DATA_W DeviceInterfaceDetailData;
|
||||||
|
|
||||||
hDevInfo = SetupDiGetClassDevsW(&SWBusGuid, NULL, NULL, DIGCF_DEVICEINTERFACE| DIGCF_PRESENT);
|
hDevInfo = SetupDiGetClassDevsW(&SWBusGuid, NULL, NULL, DIGCF_DEVICEINTERFACE | DIGCF_PRESENT);
|
||||||
if (!hDevInfo)
|
if (!hDevInfo)
|
||||||
{
|
{
|
||||||
// failed
|
// failed
|
||||||
|
@ -343,7 +343,7 @@ IsSoftwareBusPnpEnumeratorInstalled()
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
DeviceInterfaceDetailData = (PSP_DEVICE_INTERFACE_DETAIL_DATA_W)HeapAlloc(GetProcessHeap(), 0, MAX_PATH * sizeof(WCHAR) + sizeof(SP_DEVICE_INTERFACE_DETAIL_DATA_W));
|
DeviceInterfaceDetailData = (PSP_DEVICE_INTERFACE_DETAIL_DATA_W)HeapAlloc(GetProcessHeap(), 0, (MAX_PATH * sizeof(WCHAR)) + sizeof(SP_DEVICE_INTERFACE_DETAIL_DATA_W));
|
||||||
if (!DeviceInterfaceDetailData)
|
if (!DeviceInterfaceDetailData)
|
||||||
{
|
{
|
||||||
// failed
|
// failed
|
||||||
|
@ -352,7 +352,7 @@ IsSoftwareBusPnpEnumeratorInstalled()
|
||||||
}
|
}
|
||||||
|
|
||||||
DeviceInterfaceDetailData->cbSize = sizeof(SP_DEVICE_INTERFACE_DETAIL_DATA_W);
|
DeviceInterfaceDetailData->cbSize = sizeof(SP_DEVICE_INTERFACE_DETAIL_DATA_W);
|
||||||
if (!SetupDiGetDeviceInterfaceDetailW(hDevInfo, &DeviceInterfaceData, DeviceInterfaceDetailData,MAX_PATH * sizeof(WCHAR) + sizeof(SP_DEVICE_INTERFACE_DETAIL_DATA_W), NULL, NULL))
|
if (!SetupDiGetDeviceInterfaceDetailW(hDevInfo, &DeviceInterfaceData, DeviceInterfaceDetailData, (MAX_PATH * sizeof(WCHAR)) + sizeof(SP_DEVICE_INTERFACE_DETAIL_DATA_W), NULL, NULL))
|
||||||
{
|
{
|
||||||
// failed
|
// failed
|
||||||
HeapFree(GetProcessHeap(), 0, DeviceInterfaceDetailData);
|
HeapFree(GetProcessHeap(), 0, DeviceInterfaceDetailData);
|
||||||
|
@ -370,32 +370,32 @@ InstallSoftwareBusPnpEnumerator(LPWSTR InfPath, LPCWSTR HardwareIdList)
|
||||||
HDEVINFO DeviceInfoSet = INVALID_HANDLE_VALUE;
|
HDEVINFO DeviceInfoSet = INVALID_HANDLE_VALUE;
|
||||||
SP_DEVINFO_DATA DeviceInfoData;
|
SP_DEVINFO_DATA DeviceInfoData;
|
||||||
GUID ClassGUID;
|
GUID ClassGUID;
|
||||||
TCHAR ClassName[50];
|
WCHAR ClassName[50];
|
||||||
int Result = 0;
|
int Result = 0;
|
||||||
HMODULE hModule = NULL;
|
HMODULE hModule = NULL;
|
||||||
UpdateDriverForPlugAndPlayDevicesProto UpdateProc;
|
UpdateDriverForPlugAndPlayDevicesProto UpdateProc;
|
||||||
BOOL reboot = FALSE;
|
BOOL reboot = FALSE;
|
||||||
DWORD flags = 0;
|
DWORD flags = 0;
|
||||||
|
|
||||||
if (!SetupDiGetINFClass(InfPath,&ClassGUID,ClassName,sizeof(ClassName)/sizeof(ClassName[0]),0))
|
if (!SetupDiGetINFClassW(InfPath, &ClassGUID, ClassName, _countof(ClassName), NULL))
|
||||||
{
|
{
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
DeviceInfoSet = SetupDiCreateDeviceInfoList(&ClassGUID,0);
|
DeviceInfoSet = SetupDiCreateDeviceInfoList(&ClassGUID, NULL);
|
||||||
if(DeviceInfoSet == INVALID_HANDLE_VALUE)
|
if (DeviceInfoSet == INVALID_HANDLE_VALUE)
|
||||||
{
|
{
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
DeviceInfoData.cbSize = sizeof(SP_DEVINFO_DATA);
|
DeviceInfoData.cbSize = sizeof(SP_DEVINFO_DATA);
|
||||||
if (!SetupDiCreateDeviceInfo(DeviceInfoSet, ClassName, &ClassGUID, NULL, 0, DICD_GENERATE_ID, &DeviceInfoData))
|
if (!SetupDiCreateDeviceInfoW(DeviceInfoSet, ClassName, &ClassGUID, NULL, NULL, DICD_GENERATE_ID, &DeviceInfoData))
|
||||||
{
|
{
|
||||||
SetupDiDestroyDeviceInfoList(DeviceInfoSet);
|
SetupDiDestroyDeviceInfoList(DeviceInfoSet);
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
if(!SetupDiSetDeviceRegistryProperty(DeviceInfoSet, &DeviceInfoData, SPDRP_HARDWAREID, (LPBYTE)HardwareIdList, (lstrlen(HardwareIdList)+1+1)*sizeof(TCHAR)))
|
if (!SetupDiSetDeviceRegistryPropertyW(DeviceInfoSet, &DeviceInfoData, SPDRP_HARDWAREID, (LPBYTE)HardwareIdList, (wcslen(HardwareIdList) + 1 + 1) * sizeof(WCHAR)))
|
||||||
{
|
{
|
||||||
SetupDiDestroyDeviceInfoList(DeviceInfoSet);
|
SetupDiDestroyDeviceInfoList(DeviceInfoSet);
|
||||||
return -1;
|
return -1;
|
||||||
|
@ -407,27 +407,29 @@ InstallSoftwareBusPnpEnumerator(LPWSTR InfPath, LPCWSTR HardwareIdList)
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
if(GetFileAttributes(InfPath)==(DWORD)(-1)) {
|
if (GetFileAttributesW(InfPath) == INVALID_FILE_ATTRIBUTES)
|
||||||
|
{
|
||||||
SetupDiDestroyDeviceInfoList(DeviceInfoSet);
|
SetupDiDestroyDeviceInfoList(DeviceInfoSet);
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
flags |= INSTALLFLAG_FORCE;
|
flags |= INSTALLFLAG_FORCE;
|
||||||
hModule = LoadLibraryW(L"newdev.dll");
|
hModule = LoadLibraryW(L"newdev.dll");
|
||||||
if(!hModule) {
|
if (!hModule)
|
||||||
|
{
|
||||||
SetupDiDestroyDeviceInfoList(DeviceInfoSet);
|
SetupDiDestroyDeviceInfoList(DeviceInfoSet);
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
UpdateProc = (UpdateDriverForPlugAndPlayDevicesProto)GetProcAddress(hModule,UPDATEDRIVERFORPLUGANDPLAYDEVICES);
|
UpdateProc = (UpdateDriverForPlugAndPlayDevicesProto)GetProcAddress(hModule, UPDATEDRIVERFORPLUGANDPLAYDEVICES);
|
||||||
if(!UpdateProc)
|
if (!UpdateProc)
|
||||||
{
|
{
|
||||||
SetupDiDestroyDeviceInfoList(DeviceInfoSet);
|
SetupDiDestroyDeviceInfoList(DeviceInfoSet);
|
||||||
FreeLibrary(hModule);
|
FreeLibrary(hModule);
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
if(!UpdateProc(NULL, HardwareIdList, InfPath, flags, &reboot))
|
if (!UpdateProc(NULL, HardwareIdList, InfPath, flags, &reboot))
|
||||||
{
|
{
|
||||||
SetupDiDestroyDeviceInfoList(DeviceInfoSet);
|
SetupDiDestroyDeviceInfoList(DeviceInfoSet);
|
||||||
FreeLibrary(hModule);
|
FreeLibrary(hModule);
|
||||||
|
@ -443,7 +445,6 @@ DWORD
|
||||||
MMSYS_InstallDevice(HDEVINFO hDevInfo, PSP_DEVINFO_DATA pspDevInfoData)
|
MMSYS_InstallDevice(HDEVINFO hDevInfo, PSP_DEVINFO_DATA pspDevInfoData)
|
||||||
{
|
{
|
||||||
UINT Length;
|
UINT Length;
|
||||||
LPWSTR pBuffer;
|
|
||||||
WCHAR szBuffer[MAX_PATH];
|
WCHAR szBuffer[MAX_PATH];
|
||||||
HINF hInf;
|
HINF hInf;
|
||||||
PVOID Context;
|
PVOID Context;
|
||||||
|
@ -458,19 +459,14 @@ MMSYS_InstallDevice(HDEVINFO hDevInfo, PSP_DEVINFO_DATA pspDevInfoData)
|
||||||
!IsEqualIID(&pspDevInfoData->ClassGuid, &GUID_DEVCLASS_MEDIA))
|
!IsEqualIID(&pspDevInfoData->ClassGuid, &GUID_DEVCLASS_MEDIA))
|
||||||
return ERROR_DI_DO_DEFAULT;
|
return ERROR_DI_DO_DEFAULT;
|
||||||
|
|
||||||
Length = GetWindowsDirectoryW(szBuffer, MAX_PATH);
|
Length = GetWindowsDirectoryW(szBuffer, _countof(szBuffer));
|
||||||
if (!Length || Length >= MAX_PATH - 14)
|
if (!Length || Length >= _countof(szBuffer) - CONST_STR_LEN(L"\\inf\\audio.inf"))
|
||||||
{
|
{
|
||||||
return ERROR_GEN_FAILURE;
|
return ERROR_GEN_FAILURE;
|
||||||
}
|
}
|
||||||
|
|
||||||
pBuffer = PathAddBackslashW(szBuffer);
|
//PathCchAppend(szBuffer, _countof(szBuffer), L"inf\\audio.inf");
|
||||||
if (!pBuffer)
|
StringCchCatW(szBuffer, _countof(szBuffer), L"\\inf\\audio.inf");
|
||||||
{
|
|
||||||
return ERROR_GEN_FAILURE;
|
|
||||||
}
|
|
||||||
|
|
||||||
wcscpy(pBuffer, L"inf\\audio.inf");
|
|
||||||
|
|
||||||
hInf = SetupOpenInfFileW(szBuffer,
|
hInf = SetupOpenInfFileW(szBuffer,
|
||||||
NULL,
|
NULL,
|
||||||
|
@ -513,52 +509,54 @@ MMSYS_InstallDevice(HDEVINFO hDevInfo, PSP_DEVINFO_DATA pspDevInfoData)
|
||||||
|
|
||||||
if (!IsSoftwareBusPnpEnumeratorInstalled())
|
if (!IsSoftwareBusPnpEnumeratorInstalled())
|
||||||
{
|
{
|
||||||
Length = GetWindowsDirectoryW(szBuffer, MAX_PATH);
|
Length = GetWindowsDirectoryW(szBuffer, _countof(szBuffer));
|
||||||
if (!Length || Length >= MAX_PATH - 14)
|
if (!Length || Length >= _countof(szBuffer) - CONST_STR_LEN(L"\\inf\\machine.inf"))
|
||||||
{
|
{
|
||||||
return ERROR_GEN_FAILURE;
|
return ERROR_GEN_FAILURE;
|
||||||
}
|
}
|
||||||
|
|
||||||
pBuffer = PathAddBackslashW(szBuffer);
|
//PathCchAppend(szBuffer, _countof(szBuffer), L"inf\\machine.inf");
|
||||||
if (!pBuffer)
|
StringCchCatW(szBuffer, _countof(szBuffer), L"\\inf\\machine.inf");
|
||||||
{
|
|
||||||
return ERROR_GEN_FAILURE;
|
|
||||||
}
|
|
||||||
|
|
||||||
wcscpy(pBuffer, L"inf\\machine.inf");
|
|
||||||
InstallSoftwareBusPnpEnumerator(szBuffer, L"ROOT\\SWENUM\0");
|
InstallSoftwareBusPnpEnumerator(szBuffer, L"ROOT\\SWENUM\0");
|
||||||
}
|
}
|
||||||
|
|
||||||
hSCManager = OpenSCManager(NULL, NULL, SC_MANAGER_CONNECT);
|
hSCManager = OpenSCManagerW(NULL, NULL, SC_MANAGER_CONNECT);
|
||||||
if (!hSCManager)
|
if (!hSCManager)
|
||||||
{
|
{
|
||||||
return ERROR_DI_DO_DEFAULT;
|
return ERROR_DI_DO_DEFAULT;
|
||||||
}
|
}
|
||||||
|
|
||||||
hService = OpenService(hSCManager, L"AudioSrv", SERVICE_ALL_ACCESS);
|
hService = OpenServiceW(hSCManager, L"AudioSrv", SERVICE_ALL_ACCESS);
|
||||||
if (hService)
|
if (hService)
|
||||||
{
|
{
|
||||||
/* Make AudioSrv start automatically */
|
/* Make AudioSrv start automatically */
|
||||||
ChangeServiceConfig(hService, SERVICE_NO_CHANGE, SERVICE_AUTO_START, SERVICE_NO_CHANGE, NULL, NULL, NULL, NULL, NULL, NULL, NULL);
|
ChangeServiceConfigW(hService, SERVICE_NO_CHANGE, SERVICE_AUTO_START, SERVICE_NO_CHANGE, NULL, NULL, NULL, NULL, NULL, NULL, NULL);
|
||||||
|
|
||||||
StartService(hService, 0, NULL);
|
StartServiceW(hService, 0, NULL);
|
||||||
CloseServiceHandle(hService);
|
CloseServiceHandle(hService);
|
||||||
}
|
}
|
||||||
CloseServiceHandle(hSCManager);
|
CloseServiceHandle(hSCManager);
|
||||||
|
|
||||||
if (RegOpenKeyExW(HKEY_LOCAL_MACHINE, L"SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\\Drivers32", 0, GENERIC_READ | GENERIC_WRITE, &hKey) == ERROR_SUCCESS)
|
if (RegOpenKeyExW(HKEY_LOCAL_MACHINE, L"SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\\Drivers32", 0, KEY_READ | KEY_WRITE, &hKey) == ERROR_SUCCESS)
|
||||||
{
|
{
|
||||||
szBuffer[Length] = '\0';
|
Length = GetSystemDirectoryW(szBuffer, _countof(szBuffer));
|
||||||
pBuffer = PathAddBackslashW(szBuffer);
|
if (!Length || Length >= _countof(szBuffer) - CONST_STR_LEN(L"\\wdmaud.drv"))
|
||||||
wcscpy(pBuffer, L"system32\\wdmaud.drv");
|
{
|
||||||
|
RegCloseKey(hKey);
|
||||||
|
return ERROR_DI_DO_DEFAULT;
|
||||||
|
}
|
||||||
|
|
||||||
for(Index = 1; Index <= 4; Index++)
|
//PathCchAppend(szBuffer, _countof(szBuffer), L"wdmaud.drv");
|
||||||
|
StringCchCatW(szBuffer, _countof(szBuffer), L"\\wdmaud.drv");
|
||||||
|
|
||||||
|
for (Index = 1; Index <= 4; Index++)
|
||||||
{
|
{
|
||||||
swprintf(WaveName, L"wave%u", Index);
|
StringCchPrintfW(WaveName, _countof(WaveName), L"wave%u", Index);
|
||||||
if (RegQueryValueExW(hKey, WaveName, 0, NULL, NULL, &BufferSize) != ERROR_MORE_DATA)
|
if (RegQueryValueExW(hKey, WaveName, 0, NULL, NULL, &BufferSize) != ERROR_MORE_DATA)
|
||||||
{
|
{
|
||||||
/* Store new audio driver entry */
|
/* Store new audio driver entry */
|
||||||
RegSetValueExW(hKey, WaveName, 0, REG_SZ, (LPBYTE)szBuffer, (wcslen(szBuffer)+1) * sizeof(WCHAR));
|
RegSetValueExW(hKey, WaveName, 0, REG_SZ, (LPBYTE)szBuffer, (wcslen(szBuffer) + 1) * sizeof(WCHAR));
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
@ -569,9 +567,9 @@ MMSYS_InstallDevice(HDEVINFO hDevInfo, PSP_DEVINFO_DATA pspDevInfoData)
|
||||||
if (RegQueryValueExW(hKey, WaveName, 0, NULL, (LPBYTE)Buffer, &BufferSize) == ERROR_SUCCESS)
|
if (RegQueryValueExW(hKey, WaveName, 0, NULL, (LPBYTE)Buffer, &BufferSize) == ERROR_SUCCESS)
|
||||||
{
|
{
|
||||||
/* Make sure the buffer is zero terminated */
|
/* Make sure the buffer is zero terminated */
|
||||||
Buffer[MAX_PATH-1] = L'\0';
|
Buffer[_countof(Buffer) - 1] = UNICODE_NULL;
|
||||||
|
|
||||||
if (!wcsicmp(Buffer, szBuffer))
|
if (!_wcsicmp(Buffer, szBuffer))
|
||||||
{
|
{
|
||||||
/* An entry already exists */
|
/* An entry already exists */
|
||||||
break;
|
break;
|
||||||
|
@ -651,7 +649,7 @@ HardwareDlgProc(HWND hwndDlg,
|
||||||
{
|
{
|
||||||
UNREFERENCED_PARAMETER(lParam);
|
UNREFERENCED_PARAMETER(lParam);
|
||||||
UNREFERENCED_PARAMETER(wParam);
|
UNREFERENCED_PARAMETER(wParam);
|
||||||
switch(uMsg)
|
switch (uMsg)
|
||||||
{
|
{
|
||||||
case WM_INITDIALOG:
|
case WM_INITDIALOG:
|
||||||
{
|
{
|
||||||
|
@ -662,7 +660,7 @@ HardwareDlgProc(HWND hwndDlg,
|
||||||
/* Create the hardware page */
|
/* Create the hardware page */
|
||||||
DeviceCreateHardwarePageEx(hwndDlg,
|
DeviceCreateHardwarePageEx(hwndDlg,
|
||||||
Guids,
|
Guids,
|
||||||
sizeof(Guids) / sizeof(Guids[0]),
|
_countof(Guids),
|
||||||
HWPD_LARGELIST);
|
HWPD_LARGELIST);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
@ -694,50 +692,48 @@ MmSysApplet(HWND hwnd,
|
||||||
LPARAM wParam,
|
LPARAM wParam,
|
||||||
LPARAM lParam)
|
LPARAM lParam)
|
||||||
{
|
{
|
||||||
PROPSHEETPAGE psp[5];
|
PROPSHEETPAGEW psp[5];
|
||||||
PROPSHEETHEADER psh; // = { 0 };
|
PROPSHEETHEADERW psh; // = { 0 };
|
||||||
INT nPage = 0;
|
INT nPage = 0;
|
||||||
|
|
||||||
UNREFERENCED_PARAMETER(lParam);
|
|
||||||
UNREFERENCED_PARAMETER(wParam);
|
UNREFERENCED_PARAMETER(wParam);
|
||||||
UNREFERENCED_PARAMETER(uMsg);
|
|
||||||
|
|
||||||
if (uMsg == CPL_STARTWPARMSW && lParam != 0)
|
if (uMsg == CPL_STARTWPARMSW && lParam != 0)
|
||||||
nPage = _wtoi((PWSTR)lParam);
|
nPage = _wtoi((PWSTR)lParam);
|
||||||
|
|
||||||
psh.dwSize = sizeof(PROPSHEETHEADER);
|
psh.dwSize = sizeof(PROPSHEETHEADERW);
|
||||||
psh.dwFlags = PSH_PROPSHEETPAGE | PSH_PROPTITLE | PSH_USEICONID | PSH_USECALLBACK;
|
psh.dwFlags = PSH_PROPSHEETPAGE | PSH_PROPTITLE | PSH_USEICONID | PSH_USECALLBACK;
|
||||||
psh.hwndParent = hwnd;
|
psh.hwndParent = hwnd;
|
||||||
psh.hInstance = hApplet;
|
psh.hInstance = hApplet;
|
||||||
psh.pszIcon = MAKEINTRESOURCEW(IDI_CPLICON);
|
psh.pszIcon = MAKEINTRESOURCEW(IDI_CPLICON);
|
||||||
psh.pszCaption = MAKEINTRESOURCEW(IDS_CPLNAME);
|
psh.pszCaption = MAKEINTRESOURCEW(IDS_CPLNAME);
|
||||||
psh.nPages = sizeof(psp) / sizeof(PROPSHEETPAGE);
|
psh.nPages = _countof(psp);
|
||||||
psh.nStartPage = 0;
|
psh.nStartPage = 0;
|
||||||
psh.ppsp = psp;
|
psh.ppsp = psp;
|
||||||
psh.pfnCallback = PropSheetProc;
|
psh.pfnCallback = PropSheetProc;
|
||||||
|
|
||||||
InitPropSheetPage(&psp[0], IDD_VOLUME,VolumeDlgProc);
|
InitPropSheetPage(&psp[0], IDD_VOLUME, VolumeDlgProc);
|
||||||
InitPropSheetPage(&psp[1], IDD_SOUNDS,SoundsDlgProc);
|
InitPropSheetPage(&psp[1], IDD_SOUNDS, SoundsDlgProc);
|
||||||
InitPropSheetPage(&psp[2], IDD_AUDIO,AudioDlgProc);
|
InitPropSheetPage(&psp[2], IDD_AUDIO, AudioDlgProc);
|
||||||
InitPropSheetPage(&psp[3], IDD_VOICE,VoiceDlgProc);
|
InitPropSheetPage(&psp[3], IDD_VOICE, VoiceDlgProc);
|
||||||
InitPropSheetPage(&psp[4], IDD_HARDWARE,HardwareDlgProc);
|
InitPropSheetPage(&psp[4], IDD_HARDWARE, HardwareDlgProc);
|
||||||
|
|
||||||
if (nPage != 0 && nPage <= psh.nPages)
|
if (nPage != 0 && nPage <= psh.nPages)
|
||||||
psh.nStartPage = nPage;
|
psh.nStartPage = nPage;
|
||||||
|
|
||||||
return (LONG)(PropertySheet(&psh) != -1);
|
return (LONG)(PropertySheetW(&psh) != -1);
|
||||||
}
|
}
|
||||||
|
|
||||||
VOID
|
VOID
|
||||||
InitPropSheetPage(PROPSHEETPAGE *psp,
|
InitPropSheetPage(PROPSHEETPAGEW *psp,
|
||||||
WORD idDlg,
|
WORD idDlg,
|
||||||
DLGPROC DlgProc)
|
DLGPROC DlgProc)
|
||||||
{
|
{
|
||||||
ZeroMemory(psp, sizeof(PROPSHEETPAGE));
|
ZeroMemory(psp, sizeof(PROPSHEETPAGEW));
|
||||||
psp->dwSize = sizeof(PROPSHEETPAGE);
|
psp->dwSize = sizeof(PROPSHEETPAGEW);
|
||||||
psp->dwFlags = PSP_DEFAULT;
|
psp->dwFlags = PSP_DEFAULT;
|
||||||
psp->hInstance = hApplet;
|
psp->hInstance = hApplet;
|
||||||
psp->pszTemplate = MAKEINTRESOURCE(idDlg);
|
psp->pszTemplate = MAKEINTRESOURCEW(idDlg);
|
||||||
psp->pfnDlgProc = DlgProc;
|
psp->pfnDlgProc = DlgProc;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -749,7 +745,7 @@ CPlApplet(HWND hwndCpl,
|
||||||
LPARAM lParam1,
|
LPARAM lParam1,
|
||||||
LPARAM lParam2)
|
LPARAM lParam2)
|
||||||
{
|
{
|
||||||
switch(uMsg)
|
switch (uMsg)
|
||||||
{
|
{
|
||||||
case CPL_INIT:
|
case CPL_INIT:
|
||||||
return TRUE;
|
return TRUE;
|
||||||
|
@ -789,28 +785,28 @@ CPlApplet(HWND hwndCpl,
|
||||||
VOID WINAPI
|
VOID WINAPI
|
||||||
ShowAudioPropertySheet(HWND hwnd,
|
ShowAudioPropertySheet(HWND hwnd,
|
||||||
HINSTANCE hInstance,
|
HINSTANCE hInstance,
|
||||||
LPTSTR lpszCmd,
|
LPWSTR lpszCmd,
|
||||||
int nCmdShow)
|
int nCmdShow)
|
||||||
{
|
{
|
||||||
PROPSHEETPAGE psp[1];
|
PROPSHEETPAGEW psp[1];
|
||||||
PROPSHEETHEADER psh;
|
PROPSHEETHEADERW psh;
|
||||||
|
|
||||||
DPRINT("ShowAudioPropertySheet()\n");
|
DPRINT("ShowAudioPropertySheet()\n");
|
||||||
|
|
||||||
psh.dwSize = sizeof(PROPSHEETHEADER);
|
psh.dwSize = sizeof(PROPSHEETHEADERW);
|
||||||
psh.dwFlags = PSH_PROPSHEETPAGE | PSH_PROPTITLE | PSH_USEICONID | PSH_USECALLBACK;
|
psh.dwFlags = PSH_PROPSHEETPAGE | PSH_PROPTITLE | PSH_USEICONID | PSH_USECALLBACK;
|
||||||
psh.hwndParent = hwnd;
|
psh.hwndParent = hwnd;
|
||||||
psh.hInstance = hInstance;
|
psh.hInstance = hInstance;
|
||||||
psh.pszIcon = MAKEINTRESOURCEW(IDI_CPLICON);
|
psh.pszIcon = MAKEINTRESOURCEW(IDI_CPLICON);
|
||||||
psh.pszCaption = MAKEINTRESOURCEW(IDS_CPLNAME);
|
psh.pszCaption = MAKEINTRESOURCEW(IDS_CPLNAME);
|
||||||
psh.nPages = sizeof(psp) / sizeof(PROPSHEETPAGE);
|
psh.nPages = _countof(psp);
|
||||||
psh.nStartPage = 0;
|
psh.nStartPage = 0;
|
||||||
psh.ppsp = psp;
|
psh.ppsp = psp;
|
||||||
psh.pfnCallback = PropSheetProc;
|
psh.pfnCallback = PropSheetProc;
|
||||||
|
|
||||||
InitPropSheetPage(&psp[0], IDD_AUDIO,AudioDlgProc);
|
InitPropSheetPage(&psp[0], IDD_AUDIO,AudioDlgProc);
|
||||||
|
|
||||||
PropertySheet(&psh);
|
PropertySheetW(&psh);
|
||||||
}
|
}
|
||||||
|
|
||||||
VOID WINAPI
|
VOID WINAPI
|
||||||
|
@ -819,29 +815,29 @@ ShowFullControlPanel(HWND hwnd,
|
||||||
LPSTR lpszCmd,
|
LPSTR lpszCmd,
|
||||||
int nCmdShow)
|
int nCmdShow)
|
||||||
{
|
{
|
||||||
PROPSHEETPAGE psp[5];
|
PROPSHEETPAGEW psp[5];
|
||||||
PROPSHEETHEADER psh;
|
PROPSHEETHEADERW psh;
|
||||||
|
|
||||||
DPRINT("ShowFullControlPanel()\n");
|
DPRINT("ShowFullControlPanel()\n");
|
||||||
|
|
||||||
psh.dwSize = sizeof(PROPSHEETHEADER);
|
psh.dwSize = sizeof(PROPSHEETHEADERW);
|
||||||
psh.dwFlags = PSH_PROPSHEETPAGE | PSH_PROPTITLE | PSH_USEICONID | PSH_USECALLBACK;
|
psh.dwFlags = PSH_PROPSHEETPAGE | PSH_PROPTITLE | PSH_USEICONID | PSH_USECALLBACK;
|
||||||
psh.hwndParent = hwnd;
|
psh.hwndParent = hwnd;
|
||||||
psh.hInstance = hInstance;
|
psh.hInstance = hInstance;
|
||||||
psh.pszIcon = MAKEINTRESOURCEW(IDI_CPLICON);
|
psh.pszIcon = MAKEINTRESOURCEW(IDI_CPLICON);
|
||||||
psh.pszCaption = MAKEINTRESOURCEW(IDS_CPLNAME);
|
psh.pszCaption = MAKEINTRESOURCEW(IDS_CPLNAME);
|
||||||
psh.nPages = sizeof(psp) / sizeof(PROPSHEETPAGE);
|
psh.nPages = _countof(psp);
|
||||||
psh.nStartPage = 0;
|
psh.nStartPage = 0;
|
||||||
psh.ppsp = psp;
|
psh.ppsp = psp;
|
||||||
psh.pfnCallback = PropSheetProc;
|
psh.pfnCallback = PropSheetProc;
|
||||||
|
|
||||||
InitPropSheetPage(&psp[0], IDD_VOLUME,VolumeDlgProc);
|
InitPropSheetPage(&psp[0], IDD_VOLUME, VolumeDlgProc);
|
||||||
InitPropSheetPage(&psp[1], IDD_SOUNDS,SoundsDlgProc);
|
InitPropSheetPage(&psp[1], IDD_SOUNDS, SoundsDlgProc);
|
||||||
InitPropSheetPage(&psp[2], IDD_AUDIO,AudioDlgProc);
|
InitPropSheetPage(&psp[2], IDD_AUDIO, AudioDlgProc);
|
||||||
InitPropSheetPage(&psp[3], IDD_VOICE,VoiceDlgProc);
|
InitPropSheetPage(&psp[3], IDD_VOICE, VoiceDlgProc);
|
||||||
InitPropSheetPage(&psp[4], IDD_HARDWARE,HardwareDlgProc);
|
InitPropSheetPage(&psp[4], IDD_HARDWARE, HardwareDlgProc);
|
||||||
|
|
||||||
PropertySheet(&psh);
|
PropertySheetW(&psh);
|
||||||
}
|
}
|
||||||
|
|
||||||
BOOL WINAPI
|
BOOL WINAPI
|
||||||
|
@ -850,7 +846,7 @@ DllMain(HINSTANCE hinstDLL,
|
||||||
LPVOID lpReserved)
|
LPVOID lpReserved)
|
||||||
{
|
{
|
||||||
UNREFERENCED_PARAMETER(lpReserved);
|
UNREFERENCED_PARAMETER(lpReserved);
|
||||||
switch(dwReason)
|
switch (dwReason)
|
||||||
{
|
{
|
||||||
case DLL_PROCESS_ATTACH:
|
case DLL_PROCESS_ATTACH:
|
||||||
hApplet = hinstDLL;
|
hApplet = hinstDLL;
|
||||||
|
|
|
@ -14,12 +14,14 @@
|
||||||
#include <winuser.h>
|
#include <winuser.h>
|
||||||
#include <mmsystem.h>
|
#include <mmsystem.h>
|
||||||
#include <cpl.h>
|
#include <cpl.h>
|
||||||
#include <tchar.h>
|
|
||||||
#include <setupapi.h>
|
#include <setupapi.h>
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
|
#include <strsafe.h>
|
||||||
|
|
||||||
#include "resource.h"
|
#include "resource.h"
|
||||||
|
|
||||||
|
#define CONST_STR_LEN(str) (_countof(str) - 1)
|
||||||
|
|
||||||
//typedef LONG (CALLBACK *APPLET_PROC)(VOID);
|
//typedef LONG (CALLBACK *APPLET_PROC)(VOID);
|
||||||
|
|
||||||
typedef struct _APPLET
|
typedef struct _APPLET
|
||||||
|
@ -34,8 +36,8 @@ extern HINSTANCE hApplet;
|
||||||
|
|
||||||
|
|
||||||
#define DRVM_MAPPER 0x2000
|
#define DRVM_MAPPER 0x2000
|
||||||
#define DRVM_MAPPER_PREFERRED_GET (DRVM_MAPPER+21)
|
#define DRVM_MAPPER_PREFERRED_GET (DRVM_MAPPER + 21)
|
||||||
#define DRVM_MAPPER_PREFERRED_SET (DRVM_MAPPER+22)
|
#define DRVM_MAPPER_PREFERRED_SET (DRVM_MAPPER + 22)
|
||||||
|
|
||||||
#define VOLUME_MIN 0
|
#define VOLUME_MIN 0
|
||||||
#define VOLUME_MAX 500
|
#define VOLUME_MAX 500
|
||||||
|
@ -46,7 +48,7 @@ extern HINSTANCE hApplet;
|
||||||
|
|
||||||
VOID
|
VOID
|
||||||
InitPropSheetPage(
|
InitPropSheetPage(
|
||||||
PROPSHEETPAGE *psp,
|
PROPSHEETPAGEW *psp,
|
||||||
WORD idDlg,
|
WORD idDlg,
|
||||||
DLGPROC DlgProc);
|
DLGPROC DlgProc);
|
||||||
|
|
||||||
|
|
|
@ -13,24 +13,23 @@
|
||||||
|
|
||||||
#include <commdlg.h>
|
#include <commdlg.h>
|
||||||
#include <windowsx.h>
|
#include <windowsx.h>
|
||||||
#include <strsafe.h>
|
|
||||||
|
|
||||||
#include <debug.h>
|
#include <debug.h>
|
||||||
|
|
||||||
typedef struct _LABEL_MAP
|
typedef struct _LABEL_MAP
|
||||||
{
|
{
|
||||||
TCHAR *szName;
|
PWCHAR szName;
|
||||||
TCHAR *szDesc;
|
PWCHAR szDesc;
|
||||||
TCHAR *szIcon;
|
PWCHAR szIcon;
|
||||||
struct _APP_MAP *AppMap;
|
struct _APP_MAP *AppMap;
|
||||||
struct _LABEL_MAP *Next;
|
struct _LABEL_MAP *Next;
|
||||||
} LABEL_MAP, *PLABEL_MAP;
|
} LABEL_MAP, *PLABEL_MAP;
|
||||||
|
|
||||||
typedef struct _APP_MAP
|
typedef struct _APP_MAP
|
||||||
{
|
{
|
||||||
TCHAR szName[MAX_PATH];
|
WCHAR szName[MAX_PATH];
|
||||||
TCHAR szDesc[MAX_PATH];
|
WCHAR szDesc[MAX_PATH];
|
||||||
TCHAR szIcon[MAX_PATH];
|
WCHAR szIcon[MAX_PATH];
|
||||||
|
|
||||||
struct _APP_MAP *Next;
|
struct _APP_MAP *Next;
|
||||||
PLABEL_MAP LabelMap;
|
PLABEL_MAP LabelMap;
|
||||||
|
@ -40,20 +39,20 @@ typedef struct _LABEL_CONTEXT
|
||||||
{
|
{
|
||||||
PLABEL_MAP LabelMap;
|
PLABEL_MAP LabelMap;
|
||||||
PAPP_MAP AppMap;
|
PAPP_MAP AppMap;
|
||||||
TCHAR szValue[MAX_PATH];
|
WCHAR szValue[MAX_PATH];
|
||||||
struct _LABEL_CONTEXT *Next;
|
struct _LABEL_CONTEXT *Next;
|
||||||
} LABEL_CONTEXT, *PLABEL_CONTEXT;
|
} LABEL_CONTEXT, *PLABEL_CONTEXT;
|
||||||
|
|
||||||
typedef struct _SOUND_SCHEME_CONTEXT
|
typedef struct _SOUND_SCHEME_CONTEXT
|
||||||
{
|
{
|
||||||
TCHAR szName[MAX_PATH];
|
WCHAR szName[MAX_PATH];
|
||||||
TCHAR szDesc[MAX_PATH];
|
WCHAR szDesc[MAX_PATH];
|
||||||
PLABEL_CONTEXT LabelContext;
|
PLABEL_CONTEXT LabelContext;
|
||||||
} SOUND_SCHEME_CONTEXT, *PSOUND_SCHEME_CONTEXT;
|
} SOUND_SCHEME_CONTEXT, *PSOUND_SCHEME_CONTEXT;
|
||||||
|
|
||||||
typedef struct _GLOBAL_DATA
|
typedef struct _GLOBAL_DATA
|
||||||
{
|
{
|
||||||
TCHAR szDefault[MAX_PATH];
|
WCHAR szDefault[MAX_PATH];
|
||||||
HIMAGELIST hSoundsImageList;
|
HIMAGELIST hSoundsImageList;
|
||||||
PLABEL_MAP pLabelMap;
|
PLABEL_MAP pLabelMap;
|
||||||
PAPP_MAP pAppMap;
|
PAPP_MAP pAppMap;
|
||||||
|
@ -64,7 +63,7 @@ typedef struct _GLOBAL_DATA
|
||||||
/* A filter string is a list separated by NULL and ends with double NULLs. */
|
/* A filter string is a list separated by NULL and ends with double NULLs. */
|
||||||
LPWSTR MakeFilter(LPWSTR psz)
|
LPWSTR MakeFilter(LPWSTR psz)
|
||||||
{
|
{
|
||||||
WCHAR *pch;
|
PWCHAR pch;
|
||||||
|
|
||||||
ASSERT(psz[0] != UNICODE_NULL &&
|
ASSERT(psz[0] != UNICODE_NULL &&
|
||||||
psz[wcslen(psz) - 1] == L'|');
|
psz[wcslen(psz) - 1] == L'|');
|
||||||
|
@ -79,7 +78,7 @@ LPWSTR MakeFilter(LPWSTR psz)
|
||||||
return psz;
|
return psz;
|
||||||
}
|
}
|
||||||
|
|
||||||
PLABEL_MAP FindLabel(PGLOBAL_DATA pGlobalData, PAPP_MAP pAppMap, TCHAR * szName)
|
PLABEL_MAP FindLabel(PGLOBAL_DATA pGlobalData, PAPP_MAP pAppMap, PWCHAR szName)
|
||||||
{
|
{
|
||||||
PLABEL_MAP pMap = pGlobalData->pLabelMap;
|
PLABEL_MAP pMap = pGlobalData->pLabelMap;
|
||||||
|
|
||||||
|
@ -87,7 +86,7 @@ PLABEL_MAP FindLabel(PGLOBAL_DATA pGlobalData, PAPP_MAP pAppMap, TCHAR * szName)
|
||||||
{
|
{
|
||||||
ASSERT(pMap);
|
ASSERT(pMap);
|
||||||
ASSERT(pMap->szName);
|
ASSERT(pMap->szName);
|
||||||
if (!_tcscmp(pMap->szName, szName))
|
if (!wcscmp(pMap->szName, szName))
|
||||||
return pMap;
|
return pMap;
|
||||||
|
|
||||||
pMap = pMap->Next;
|
pMap = pMap->Next;
|
||||||
|
@ -99,7 +98,7 @@ PLABEL_MAP FindLabel(PGLOBAL_DATA pGlobalData, PAPP_MAP pAppMap, TCHAR * szName)
|
||||||
{
|
{
|
||||||
ASSERT(pMap);
|
ASSERT(pMap);
|
||||||
ASSERT(pMap->szName);
|
ASSERT(pMap->szName);
|
||||||
if (!_tcscmp(pMap->szName, szName))
|
if (!wcscmp(pMap->szName, szName))
|
||||||
return pMap;
|
return pMap;
|
||||||
|
|
||||||
pMap = pMap->Next;
|
pMap = pMap->Next;
|
||||||
|
@ -109,7 +108,7 @@ PLABEL_MAP FindLabel(PGLOBAL_DATA pGlobalData, PAPP_MAP pAppMap, TCHAR * szName)
|
||||||
if (!pMap)
|
if (!pMap)
|
||||||
return NULL;
|
return NULL;
|
||||||
|
|
||||||
pMap->szName = pMap->szDesc = _tcsdup(szName);
|
pMap->szName = pMap->szDesc = _wcsdup(szName);
|
||||||
if (!pMap->szName)
|
if (!pMap->szName)
|
||||||
{
|
{
|
||||||
HeapFree(GetProcessHeap(), 0, pMap);
|
HeapFree(GetProcessHeap(), 0, pMap);
|
||||||
|
@ -154,18 +153,28 @@ FreeLabelMap(PGLOBAL_DATA pGlobalData)
|
||||||
while (pGlobalData->pLabelMap)
|
while (pGlobalData->pLabelMap)
|
||||||
{
|
{
|
||||||
pCurMap = pGlobalData->pLabelMap->Next;
|
pCurMap = pGlobalData->pLabelMap->Next;
|
||||||
|
|
||||||
|
/* Prevent double freeing (for "FindLabel") */
|
||||||
|
if (pGlobalData->pLabelMap->szName != pGlobalData->pLabelMap->szDesc)
|
||||||
|
{
|
||||||
|
free(pGlobalData->pLabelMap->szName);
|
||||||
|
}
|
||||||
|
|
||||||
|
free(pGlobalData->pLabelMap->szDesc);
|
||||||
|
free(pGlobalData->pLabelMap->szIcon);
|
||||||
|
|
||||||
HeapFree(GetProcessHeap(), 0, pGlobalData->pLabelMap);
|
HeapFree(GetProcessHeap(), 0, pGlobalData->pLabelMap);
|
||||||
pGlobalData->pLabelMap = pCurMap;
|
pGlobalData->pLabelMap = pCurMap;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
PAPP_MAP FindApp(PGLOBAL_DATA pGlobalData, TCHAR *szName)
|
PAPP_MAP FindApp(PGLOBAL_DATA pGlobalData, PWCHAR szName)
|
||||||
{
|
{
|
||||||
PAPP_MAP pMap = pGlobalData->pAppMap;
|
PAPP_MAP pMap = pGlobalData->pAppMap;
|
||||||
|
|
||||||
while (pMap)
|
while (pMap)
|
||||||
{
|
{
|
||||||
if (!_tcscmp(pMap->szName, szName))
|
if (!wcscmp(pMap->szName, szName))
|
||||||
return pMap;
|
return pMap;
|
||||||
|
|
||||||
pMap = pMap->Next;
|
pMap = pMap->Next;
|
||||||
|
@ -188,7 +197,7 @@ FreeAppMap(PGLOBAL_DATA pGlobalData)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
PLABEL_CONTEXT FindLabelContext(PGLOBAL_DATA pGlobalData, PSOUND_SCHEME_CONTEXT pSoundScheme, TCHAR * AppName, TCHAR * LabelName)
|
PLABEL_CONTEXT FindLabelContext(PGLOBAL_DATA pGlobalData, PSOUND_SCHEME_CONTEXT pSoundScheme, PWCHAR AppName, PWCHAR LabelName)
|
||||||
{
|
{
|
||||||
PLABEL_CONTEXT pLabelContext;
|
PLABEL_CONTEXT pLabelContext;
|
||||||
|
|
||||||
|
@ -199,7 +208,7 @@ PLABEL_CONTEXT FindLabelContext(PGLOBAL_DATA pGlobalData, PSOUND_SCHEME_CONTEXT
|
||||||
ASSERT(pLabelContext->AppMap);
|
ASSERT(pLabelContext->AppMap);
|
||||||
ASSERT(pLabelContext->LabelMap);
|
ASSERT(pLabelContext->LabelMap);
|
||||||
|
|
||||||
if (!_tcsicmp(pLabelContext->AppMap->szName, AppName) && !_tcsicmp(pLabelContext->LabelMap->szName, LabelName))
|
if (!_wcsicmp(pLabelContext->AppMap->szName, AppName) && !_wcsicmp(pLabelContext->LabelMap->szName, LabelName))
|
||||||
{
|
{
|
||||||
return pLabelContext;
|
return pLabelContext;
|
||||||
}
|
}
|
||||||
|
@ -214,7 +223,7 @@ PLABEL_CONTEXT FindLabelContext(PGLOBAL_DATA pGlobalData, PSOUND_SCHEME_CONTEXT
|
||||||
pLabelContext->LabelMap = FindLabel(pGlobalData, pLabelContext->AppMap, LabelName);
|
pLabelContext->LabelMap = FindLabel(pGlobalData, pLabelContext->AppMap, LabelName);
|
||||||
ASSERT(pLabelContext->AppMap);
|
ASSERT(pLabelContext->AppMap);
|
||||||
ASSERT(pLabelContext->LabelMap);
|
ASSERT(pLabelContext->LabelMap);
|
||||||
pLabelContext->szValue[0] = _T('\0');
|
pLabelContext->szValue[0] = UNICODE_NULL;
|
||||||
pLabelContext->Next = pSoundScheme->LabelContext;
|
pLabelContext->Next = pSoundScheme->LabelContext;
|
||||||
pSoundScheme->LabelContext = pLabelContext;
|
pSoundScheme->LabelContext = pLabelContext;
|
||||||
|
|
||||||
|
@ -223,15 +232,15 @@ PLABEL_CONTEXT FindLabelContext(PGLOBAL_DATA pGlobalData, PSOUND_SCHEME_CONTEXT
|
||||||
|
|
||||||
|
|
||||||
BOOL
|
BOOL
|
||||||
LoadEventLabel(PGLOBAL_DATA pGlobalData, HKEY hKey, TCHAR * szSubKey)
|
LoadEventLabel(PGLOBAL_DATA pGlobalData, HKEY hKey, PWCHAR szSubKey)
|
||||||
{
|
{
|
||||||
HKEY hSubKey;
|
HKEY hSubKey;
|
||||||
DWORD cbValue;
|
DWORD cbValue;
|
||||||
TCHAR szDesc[MAX_PATH];
|
WCHAR szDesc[MAX_PATH];
|
||||||
TCHAR szData[MAX_PATH];
|
WCHAR szData[MAX_PATH];
|
||||||
PLABEL_MAP pMap;
|
PLABEL_MAP pMap;
|
||||||
|
|
||||||
if (RegOpenKeyEx(hKey,
|
if (RegOpenKeyExW(hKey,
|
||||||
szSubKey,
|
szSubKey,
|
||||||
0,
|
0,
|
||||||
KEY_READ,
|
KEY_READ,
|
||||||
|
@ -241,7 +250,7 @@ LoadEventLabel(PGLOBAL_DATA pGlobalData, HKEY hKey, TCHAR * szSubKey)
|
||||||
}
|
}
|
||||||
|
|
||||||
cbValue = sizeof(szDesc);
|
cbValue = sizeof(szDesc);
|
||||||
if (RegQueryValueEx(hSubKey,
|
if (RegQueryValueExW(hSubKey,
|
||||||
NULL,
|
NULL,
|
||||||
NULL,
|
NULL,
|
||||||
NULL,
|
NULL,
|
||||||
|
@ -253,8 +262,8 @@ LoadEventLabel(PGLOBAL_DATA pGlobalData, HKEY hKey, TCHAR * szSubKey)
|
||||||
}
|
}
|
||||||
|
|
||||||
cbValue = sizeof(szData);
|
cbValue = sizeof(szData);
|
||||||
if (RegQueryValueEx(hSubKey,
|
if (RegQueryValueExW(hSubKey,
|
||||||
_T("DispFileName"),
|
L"DispFileName",
|
||||||
NULL,
|
NULL,
|
||||||
NULL,
|
NULL,
|
||||||
(LPBYTE)szData,
|
(LPBYTE)szData,
|
||||||
|
@ -270,9 +279,9 @@ LoadEventLabel(PGLOBAL_DATA pGlobalData, HKEY hKey, TCHAR * szSubKey)
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
pMap->szName = _tcsdup(szSubKey);
|
pMap->szName = _wcsdup(szSubKey);
|
||||||
pMap->szDesc = _tcsdup(szDesc);
|
pMap->szDesc = _wcsdup(szDesc);
|
||||||
pMap->szIcon = _tcsdup(szData);
|
pMap->szIcon = _wcsdup(szData);
|
||||||
|
|
||||||
if (pGlobalData->pLabelMap)
|
if (pGlobalData->pLabelMap)
|
||||||
{
|
{
|
||||||
|
@ -293,12 +302,12 @@ LoadEventLabels(PGLOBAL_DATA pGlobalData)
|
||||||
{
|
{
|
||||||
HKEY hSubKey;
|
HKEY hSubKey;
|
||||||
DWORD dwCurKey;
|
DWORD dwCurKey;
|
||||||
TCHAR szName[MAX_PATH];
|
WCHAR szName[MAX_PATH];
|
||||||
DWORD dwName;
|
DWORD dwName;
|
||||||
DWORD dwResult;
|
DWORD dwResult;
|
||||||
DWORD dwCount;
|
DWORD dwCount;
|
||||||
if (RegOpenKeyEx(HKEY_CURRENT_USER,
|
if (RegOpenKeyExW(HKEY_CURRENT_USER,
|
||||||
_T("AppEvents\\EventLabels"),
|
L"AppEvents\\EventLabels",
|
||||||
0,
|
0,
|
||||||
KEY_READ,
|
KEY_READ,
|
||||||
&hSubKey) != ERROR_SUCCESS)
|
&hSubKey) != ERROR_SUCCESS)
|
||||||
|
@ -311,7 +320,7 @@ LoadEventLabels(PGLOBAL_DATA pGlobalData)
|
||||||
do
|
do
|
||||||
{
|
{
|
||||||
dwName = _countof(szName);
|
dwName = _countof(szName);
|
||||||
dwResult = RegEnumKeyEx(hSubKey,
|
dwResult = RegEnumKeyExW(hSubKey,
|
||||||
dwCurKey,
|
dwCurKey,
|
||||||
szName,
|
szName,
|
||||||
&dwName,
|
&dwName,
|
||||||
|
@ -337,15 +346,15 @@ LoadEventLabels(PGLOBAL_DATA pGlobalData)
|
||||||
|
|
||||||
|
|
||||||
BOOL
|
BOOL
|
||||||
AddSoundProfile(HWND hwndDlg, HKEY hKey, TCHAR * szSubKey, BOOL SetDefault)
|
AddSoundProfile(HWND hwndDlg, HKEY hKey, PWCHAR szSubKey, BOOL SetDefault)
|
||||||
{
|
{
|
||||||
HKEY hSubKey;
|
HKEY hSubKey;
|
||||||
TCHAR szValue[MAX_PATH];
|
WCHAR szValue[MAX_PATH];
|
||||||
DWORD cbValue, dwResult;
|
DWORD cbValue, dwResult;
|
||||||
LRESULT lResult;
|
LRESULT lResult;
|
||||||
PSOUND_SCHEME_CONTEXT pScheme;
|
PSOUND_SCHEME_CONTEXT pScheme;
|
||||||
|
|
||||||
if (RegOpenKeyEx(hKey,
|
if (RegOpenKeyExW(hKey,
|
||||||
szSubKey,
|
szSubKey,
|
||||||
0,
|
0,
|
||||||
KEY_READ,
|
KEY_READ,
|
||||||
|
@ -355,7 +364,7 @@ AddSoundProfile(HWND hwndDlg, HKEY hKey, TCHAR * szSubKey, BOOL SetDefault)
|
||||||
}
|
}
|
||||||
|
|
||||||
cbValue = sizeof(szValue);
|
cbValue = sizeof(szValue);
|
||||||
dwResult = RegQueryValueEx(hSubKey,
|
dwResult = RegQueryValueExW(hSubKey,
|
||||||
NULL,
|
NULL,
|
||||||
NULL,
|
NULL,
|
||||||
NULL,
|
NULL,
|
||||||
|
@ -380,8 +389,8 @@ AddSoundProfile(HWND hwndDlg, HKEY hKey, TCHAR * szSubKey, BOOL SetDefault)
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
StringCchCopy(pScheme->szDesc, MAX_PATH, szValue);
|
StringCchCopyW(pScheme->szDesc, _countof(pScheme->szDesc), szValue);
|
||||||
StringCchCopy(pScheme->szName, MAX_PATH, szSubKey);
|
StringCchCopyW(pScheme->szName, _countof(pScheme->szName), szSubKey);
|
||||||
|
|
||||||
/* Associate the value with the item in the combobox */
|
/* Associate the value with the item in the combobox */
|
||||||
ComboBox_SetItemData(GetDlgItem(hwndDlg, IDC_SOUND_SCHEME), lResult, pScheme);
|
ComboBox_SetItemData(GetDlgItem(hwndDlg, IDC_SOUND_SCHEME), lResult, pScheme);
|
||||||
|
@ -402,10 +411,10 @@ EnumerateSoundProfiles(PGLOBAL_DATA pGlobalData, HWND hwndDlg, HKEY hKey)
|
||||||
HKEY hSubKey;
|
HKEY hSubKey;
|
||||||
DWORD dwName, dwCurKey, dwResult, dwNumSchemes;
|
DWORD dwName, dwCurKey, dwResult, dwNumSchemes;
|
||||||
DWORD cbDefault;
|
DWORD cbDefault;
|
||||||
TCHAR szName[MAX_PATH];
|
WCHAR szName[MAX_PATH];
|
||||||
|
|
||||||
cbDefault = sizeof(pGlobalData->szDefault);
|
cbDefault = sizeof(pGlobalData->szDefault);
|
||||||
if (RegQueryValueEx(hKey,
|
if (RegQueryValueExW(hKey,
|
||||||
NULL,
|
NULL,
|
||||||
NULL,
|
NULL,
|
||||||
NULL,
|
NULL,
|
||||||
|
@ -415,8 +424,8 @@ EnumerateSoundProfiles(PGLOBAL_DATA pGlobalData, HWND hwndDlg, HKEY hKey)
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (RegOpenKeyEx(hKey,
|
if (RegOpenKeyExW(hKey,
|
||||||
_T("Names"),
|
L"Names",
|
||||||
0,
|
0,
|
||||||
KEY_READ,
|
KEY_READ,
|
||||||
&hSubKey) != ERROR_SUCCESS)
|
&hSubKey) != ERROR_SUCCESS)
|
||||||
|
@ -429,7 +438,7 @@ EnumerateSoundProfiles(PGLOBAL_DATA pGlobalData, HWND hwndDlg, HKEY hKey)
|
||||||
do
|
do
|
||||||
{
|
{
|
||||||
dwName = _countof(szName);
|
dwName = _countof(szName);
|
||||||
dwResult = RegEnumKeyEx(hSubKey,
|
dwResult = RegEnumKeyExW(hSubKey,
|
||||||
dwCurKey,
|
dwCurKey,
|
||||||
szName,
|
szName,
|
||||||
&dwName,
|
&dwName,
|
||||||
|
@ -440,7 +449,7 @@ EnumerateSoundProfiles(PGLOBAL_DATA pGlobalData, HWND hwndDlg, HKEY hKey)
|
||||||
|
|
||||||
if (dwResult == ERROR_SUCCESS)
|
if (dwResult == ERROR_SUCCESS)
|
||||||
{
|
{
|
||||||
if (AddSoundProfile(hwndDlg, hSubKey, szName, (!_tcsicmp(szName, pGlobalData->szDefault))))
|
if (AddSoundProfile(hwndDlg, hSubKey, szName, (!_wcsicmp(szName, pGlobalData->szDefault))))
|
||||||
{
|
{
|
||||||
dwNumSchemes++;
|
dwNumSchemes++;
|
||||||
}
|
}
|
||||||
|
@ -454,7 +463,7 @@ EnumerateSoundProfiles(PGLOBAL_DATA pGlobalData, HWND hwndDlg, HKEY hKey)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
PSOUND_SCHEME_CONTEXT FindSoundProfile(HWND hwndDlg, TCHAR * szName)
|
PSOUND_SCHEME_CONTEXT FindSoundProfile(HWND hwndDlg, PWCHAR szName)
|
||||||
{
|
{
|
||||||
LRESULT lCount, lIndex, lResult;
|
LRESULT lCount, lIndex, lResult;
|
||||||
PSOUND_SCHEME_CONTEXT pScheme;
|
PSOUND_SCHEME_CONTEXT pScheme;
|
||||||
|
@ -476,7 +485,7 @@ PSOUND_SCHEME_CONTEXT FindSoundProfile(HWND hwndDlg, TCHAR * szName)
|
||||||
}
|
}
|
||||||
|
|
||||||
pScheme = (PSOUND_SCHEME_CONTEXT)lResult;
|
pScheme = (PSOUND_SCHEME_CONTEXT)lResult;
|
||||||
if (!_tcsicmp(pScheme->szName, szName))
|
if (!_wcsicmp(pScheme->szName, szName))
|
||||||
{
|
{
|
||||||
return pScheme;
|
return pScheme;
|
||||||
}
|
}
|
||||||
|
@ -520,22 +529,20 @@ FreeSoundProfiles(HWND hwndDlg)
|
||||||
}
|
}
|
||||||
|
|
||||||
BOOL
|
BOOL
|
||||||
ImportSoundLabel(PGLOBAL_DATA pGlobalData, HWND hwndDlg, HKEY hKey, TCHAR * szProfile, TCHAR * szLabelName, TCHAR * szAppName, PAPP_MAP AppMap, PLABEL_MAP LabelMap)
|
ImportSoundLabel(PGLOBAL_DATA pGlobalData, HWND hwndDlg, HKEY hKey, PWCHAR szProfile, PWCHAR szLabelName, PWCHAR szAppName, PAPP_MAP AppMap, PLABEL_MAP LabelMap)
|
||||||
{
|
{
|
||||||
HKEY hSubKey;
|
HKEY hSubKey;
|
||||||
TCHAR szValue[MAX_PATH];
|
WCHAR szValue[MAX_PATH];
|
||||||
TCHAR szBuffer[MAX_PATH];
|
WCHAR szBuffer[MAX_PATH];
|
||||||
DWORD cbValue, cchLength;
|
DWORD cbValue, cchLength;
|
||||||
PSOUND_SCHEME_CONTEXT pScheme;
|
PSOUND_SCHEME_CONTEXT pScheme;
|
||||||
PLABEL_CONTEXT pLabelContext;
|
PLABEL_CONTEXT pLabelContext;
|
||||||
BOOL bCurrentProfile, bActiveProfile;
|
BOOL bCurrentProfile, bActiveProfile;
|
||||||
|
|
||||||
//MessageBox(hwndDlg, szProfile, szLabelName, MB_OK);
|
bCurrentProfile = !_wcsicmp(szProfile, L".Current");
|
||||||
|
bActiveProfile = !_wcsicmp(szProfile, pGlobalData->szDefault);
|
||||||
|
|
||||||
bCurrentProfile = !_tcsicmp(szProfile, _T(".Current"));
|
if (RegOpenKeyExW(hKey,
|
||||||
bActiveProfile = !_tcsicmp(szProfile, pGlobalData->szDefault);
|
|
||||||
|
|
||||||
if (RegOpenKeyEx(hKey,
|
|
||||||
szProfile,
|
szProfile,
|
||||||
0,
|
0,
|
||||||
KEY_READ,
|
KEY_READ,
|
||||||
|
@ -545,7 +552,7 @@ ImportSoundLabel(PGLOBAL_DATA pGlobalData, HWND hwndDlg, HKEY hKey, TCHAR * szPr
|
||||||
}
|
}
|
||||||
|
|
||||||
cbValue = sizeof(szValue);
|
cbValue = sizeof(szValue);
|
||||||
if (RegQueryValueEx(hSubKey,
|
if (RegQueryValueExW(hSubKey,
|
||||||
NULL,
|
NULL,
|
||||||
NULL,
|
NULL,
|
||||||
NULL,
|
NULL,
|
||||||
|
@ -562,12 +569,11 @@ ImportSoundLabel(PGLOBAL_DATA pGlobalData, HWND hwndDlg, HKEY hKey, TCHAR * szPr
|
||||||
|
|
||||||
if (!pScheme)
|
if (!pScheme)
|
||||||
{
|
{
|
||||||
//MessageBox(hwndDlg, szProfile, _T("no profile!!"), MB_OK);
|
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
pLabelContext = FindLabelContext(pGlobalData, pScheme, AppMap->szName, LabelMap->szName);
|
pLabelContext = FindLabelContext(pGlobalData, pScheme, AppMap->szName, LabelMap->szName);
|
||||||
|
|
||||||
cchLength = ExpandEnvironmentStrings(szValue, szBuffer, _countof(szBuffer));
|
cchLength = ExpandEnvironmentStringsW(szValue, szBuffer, _countof(szBuffer));
|
||||||
if (cchLength == 0 || cchLength > _countof(szBuffer))
|
if (cchLength == 0 || cchLength > _countof(szBuffer))
|
||||||
{
|
{
|
||||||
/* fixme */
|
/* fixme */
|
||||||
|
@ -575,26 +581,26 @@ ImportSoundLabel(PGLOBAL_DATA pGlobalData, HWND hwndDlg, HKEY hKey, TCHAR * szPr
|
||||||
}
|
}
|
||||||
|
|
||||||
if (bCurrentProfile)
|
if (bCurrentProfile)
|
||||||
_tcscpy(pLabelContext->szValue, szBuffer);
|
StringCchCopyW(pLabelContext->szValue, _countof(pLabelContext->szValue), szBuffer);
|
||||||
else if (!bActiveProfile)
|
else if (!bActiveProfile)
|
||||||
_tcscpy(pLabelContext->szValue, szBuffer);
|
StringCchCopyW(pLabelContext->szValue, _countof(pLabelContext->szValue), szBuffer);
|
||||||
|
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
DWORD
|
DWORD
|
||||||
ImportSoundEntry(PGLOBAL_DATA pGlobalData, HWND hwndDlg, HKEY hKey, TCHAR * szLabelName, TCHAR * szAppName, PAPP_MAP pAppMap)
|
ImportSoundEntry(PGLOBAL_DATA pGlobalData, HWND hwndDlg, HKEY hKey, PWCHAR szLabelName, PWCHAR szAppName, PAPP_MAP pAppMap)
|
||||||
{
|
{
|
||||||
HKEY hSubKey;
|
HKEY hSubKey;
|
||||||
DWORD dwNumProfiles;
|
DWORD dwNumProfiles;
|
||||||
DWORD dwCurKey;
|
DWORD dwCurKey;
|
||||||
DWORD dwResult;
|
DWORD dwResult;
|
||||||
DWORD dwProfile;
|
DWORD dwProfile;
|
||||||
TCHAR szProfile[MAX_PATH];
|
WCHAR szProfile[MAX_PATH];
|
||||||
PLABEL_MAP pLabel;
|
PLABEL_MAP pLabel;
|
||||||
|
|
||||||
if (RegOpenKeyEx(hKey,
|
if (RegOpenKeyExW(hKey,
|
||||||
szLabelName,
|
szLabelName,
|
||||||
0,
|
0,
|
||||||
KEY_READ,
|
KEY_READ,
|
||||||
|
@ -616,7 +622,7 @@ ImportSoundEntry(PGLOBAL_DATA pGlobalData, HWND hwndDlg, HKEY hKey, TCHAR * szLa
|
||||||
do
|
do
|
||||||
{
|
{
|
||||||
dwProfile = _countof(szProfile);
|
dwProfile = _countof(szProfile);
|
||||||
dwResult = RegEnumKeyEx(hSubKey,
|
dwResult = RegEnumKeyExW(hSubKey,
|
||||||
dwCurKey,
|
dwCurKey,
|
||||||
szProfile,
|
szProfile,
|
||||||
&dwProfile,
|
&dwProfile,
|
||||||
|
@ -643,26 +649,24 @@ ImportSoundEntry(PGLOBAL_DATA pGlobalData, HWND hwndDlg, HKEY hKey, TCHAR * szLa
|
||||||
|
|
||||||
|
|
||||||
DWORD
|
DWORD
|
||||||
ImportAppProfile(PGLOBAL_DATA pGlobalData, HWND hwndDlg, HKEY hKey, TCHAR * szAppName)
|
ImportAppProfile(PGLOBAL_DATA pGlobalData, HWND hwndDlg, HKEY hKey, PWCHAR szAppName)
|
||||||
{
|
{
|
||||||
HKEY hSubKey;
|
HKEY hSubKey;
|
||||||
TCHAR szDefault[MAX_PATH];
|
WCHAR szDefault[MAX_PATH];
|
||||||
DWORD cbValue;
|
DWORD cbValue;
|
||||||
DWORD dwCurKey;
|
DWORD dwCurKey;
|
||||||
DWORD dwResult;
|
DWORD dwResult;
|
||||||
DWORD dwNumEntry;
|
DWORD dwNumEntry;
|
||||||
DWORD dwName;
|
DWORD dwName;
|
||||||
TCHAR szName[MAX_PATH];
|
WCHAR szName[MAX_PATH];
|
||||||
TCHAR szIcon[MAX_PATH];
|
WCHAR szIcon[MAX_PATH];
|
||||||
PAPP_MAP AppMap;
|
PAPP_MAP AppMap;
|
||||||
|
|
||||||
//MessageBox(hwndDlg, szAppName, _T("Importing...\n"), MB_OK);
|
|
||||||
|
|
||||||
AppMap = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(APP_MAP));
|
AppMap = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(APP_MAP));
|
||||||
if (!AppMap)
|
if (!AppMap)
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
if (RegOpenKeyEx(hKey,
|
if (RegOpenKeyExW(hKey,
|
||||||
szAppName,
|
szAppName,
|
||||||
0,
|
0,
|
||||||
KEY_READ,
|
KEY_READ,
|
||||||
|
@ -673,7 +677,7 @@ ImportAppProfile(PGLOBAL_DATA pGlobalData, HWND hwndDlg, HKEY hKey, TCHAR * szAp
|
||||||
}
|
}
|
||||||
|
|
||||||
cbValue = sizeof(szDefault);
|
cbValue = sizeof(szDefault);
|
||||||
if (RegQueryValueEx(hSubKey,
|
if (RegQueryValueExW(hSubKey,
|
||||||
NULL,
|
NULL,
|
||||||
NULL,
|
NULL,
|
||||||
NULL,
|
NULL,
|
||||||
|
@ -686,20 +690,20 @@ ImportAppProfile(PGLOBAL_DATA pGlobalData, HWND hwndDlg, HKEY hKey, TCHAR * szAp
|
||||||
}
|
}
|
||||||
|
|
||||||
cbValue = sizeof(szIcon);
|
cbValue = sizeof(szIcon);
|
||||||
if (RegQueryValueEx(hSubKey,
|
if (RegQueryValueExW(hSubKey,
|
||||||
_T("DispFileName"),
|
L"DispFileName",
|
||||||
NULL,
|
NULL,
|
||||||
NULL,
|
NULL,
|
||||||
(LPBYTE)szIcon,
|
(LPBYTE)szIcon,
|
||||||
&cbValue) != ERROR_SUCCESS)
|
&cbValue) != ERROR_SUCCESS)
|
||||||
{
|
{
|
||||||
szIcon[0] = _T('\0');
|
szIcon[0] = UNICODE_NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* initialize app map */
|
/* initialize app map */
|
||||||
_tcscpy(AppMap->szName, szAppName);
|
StringCchCopyW(AppMap->szName, _countof(AppMap->szName), szAppName);
|
||||||
_tcscpy(AppMap->szDesc, szDefault);
|
StringCchCopyW(AppMap->szDesc, _countof(AppMap->szDesc), szDefault);
|
||||||
_tcscpy(AppMap->szIcon, szIcon);
|
StringCchCopyW(AppMap->szIcon, _countof(AppMap->szIcon), szIcon);
|
||||||
|
|
||||||
AppMap->Next = pGlobalData->pAppMap;
|
AppMap->Next = pGlobalData->pAppMap;
|
||||||
pGlobalData->pAppMap = AppMap;
|
pGlobalData->pAppMap = AppMap;
|
||||||
|
@ -710,7 +714,7 @@ ImportAppProfile(PGLOBAL_DATA pGlobalData, HWND hwndDlg, HKEY hKey, TCHAR * szAp
|
||||||
do
|
do
|
||||||
{
|
{
|
||||||
dwName = _countof(szName);
|
dwName = _countof(szName);
|
||||||
dwResult = RegEnumKeyEx(hSubKey,
|
dwResult = RegEnumKeyExW(hSubKey,
|
||||||
dwCurKey,
|
dwCurKey,
|
||||||
szName,
|
szName,
|
||||||
&dwName,
|
&dwName,
|
||||||
|
@ -739,11 +743,11 @@ ImportSoundProfiles(PGLOBAL_DATA pGlobalData, HWND hwndDlg, HKEY hKey)
|
||||||
DWORD dwCurKey;
|
DWORD dwCurKey;
|
||||||
DWORD dwResult;
|
DWORD dwResult;
|
||||||
DWORD dwNumApps;
|
DWORD dwNumApps;
|
||||||
TCHAR szName[MAX_PATH];
|
WCHAR szName[MAX_PATH];
|
||||||
HKEY hSubKey;
|
HKEY hSubKey;
|
||||||
|
|
||||||
if (RegOpenKeyEx(hKey,
|
if (RegOpenKeyExW(hKey,
|
||||||
_T("Apps"),
|
L"Apps",
|
||||||
0,
|
0,
|
||||||
KEY_READ,
|
KEY_READ,
|
||||||
&hSubKey) != ERROR_SUCCESS)
|
&hSubKey) != ERROR_SUCCESS)
|
||||||
|
@ -755,7 +759,7 @@ ImportSoundProfiles(PGLOBAL_DATA pGlobalData, HWND hwndDlg, HKEY hKey)
|
||||||
dwCurKey = 0;
|
dwCurKey = 0;
|
||||||
do
|
do
|
||||||
{
|
{
|
||||||
dwResult = RegEnumKey(hSubKey,
|
dwResult = RegEnumKeyW(hSubKey,
|
||||||
dwCurKey,
|
dwCurKey,
|
||||||
szName,
|
szName,
|
||||||
_countof(szName));
|
_countof(szName));
|
||||||
|
@ -782,8 +786,8 @@ LoadSoundProfiles(PGLOBAL_DATA pGlobalData, HWND hwndDlg)
|
||||||
HKEY hSubKey;
|
HKEY hSubKey;
|
||||||
DWORD dwNumSchemes;
|
DWORD dwNumSchemes;
|
||||||
|
|
||||||
if (RegOpenKeyEx(HKEY_CURRENT_USER,
|
if (RegOpenKeyExW(HKEY_CURRENT_USER,
|
||||||
_T("AppEvents\\Schemes"),
|
L"AppEvents\\Schemes",
|
||||||
0,
|
0,
|
||||||
KEY_READ,
|
KEY_READ,
|
||||||
&hSubKey) != ERROR_SUCCESS)
|
&hSubKey) != ERROR_SUCCESS)
|
||||||
|
@ -796,7 +800,6 @@ LoadSoundProfiles(PGLOBAL_DATA pGlobalData, HWND hwndDlg)
|
||||||
|
|
||||||
if (dwNumSchemes)
|
if (dwNumSchemes)
|
||||||
{
|
{
|
||||||
//MessageBox(hwndDlg, _T("importing sound profiles..."), NULL, MB_OK);
|
|
||||||
ImportSoundProfiles(pGlobalData, hwndDlg, hSubKey);
|
ImportSoundProfiles(pGlobalData, hwndDlg, hSubKey);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -808,34 +811,30 @@ LoadSoundProfiles(PGLOBAL_DATA pGlobalData, HWND hwndDlg)
|
||||||
BOOL
|
BOOL
|
||||||
LoadSoundFiles(HWND hwndDlg)
|
LoadSoundFiles(HWND hwndDlg)
|
||||||
{
|
{
|
||||||
TCHAR szList[256];
|
WCHAR szList[256];
|
||||||
WCHAR szPath[MAX_PATH];
|
WCHAR szPath[MAX_PATH];
|
||||||
WCHAR * ptr;
|
PWCHAR ptr;
|
||||||
WIN32_FIND_DATAW FileData;
|
WIN32_FIND_DATAW FileData;
|
||||||
HANDLE hFile;
|
HANDLE hFile;
|
||||||
LRESULT lResult;
|
LRESULT lResult;
|
||||||
UINT length;
|
UINT length;
|
||||||
|
|
||||||
/* Add no sound listview item */
|
/* Add no sound listview item */
|
||||||
if (LoadString(hApplet, IDS_NO_SOUND, szList, _countof(szList)))
|
if (LoadStringW(hApplet, IDS_NO_SOUND, szList, _countof(szList)))
|
||||||
{
|
{
|
||||||
szList[_countof(szList) - 1] = TEXT('\0');
|
szList[_countof(szList) - 1] = UNICODE_NULL;
|
||||||
ComboBox_AddString(GetDlgItem(hwndDlg, IDC_SOUND_LIST), szList);
|
ComboBox_AddString(GetDlgItem(hwndDlg, IDC_SOUND_LIST), szList);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Load sound files */
|
/* Load sound files */
|
||||||
length = GetWindowsDirectoryW(szPath, MAX_PATH);
|
length = GetWindowsDirectoryW(szPath, _countof(szPath));
|
||||||
if (length == 0 || length >= MAX_PATH - 9)
|
if (length == 0 || length >= _countof(szPath) - CONST_STR_LEN(L"\\media\\*"))
|
||||||
{
|
{
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
if (szPath[length-1] != L'\\')
|
|
||||||
{
|
//PathCchAppend(szPath, _countof(szPath), L"media\\*");
|
||||||
szPath[length] = L'\\';
|
StringCchCatW(szPath, _countof(szPath), L"\\media\\*");
|
||||||
length++;
|
|
||||||
}
|
|
||||||
wcscpy(&szPath[length], L"media\\*");
|
|
||||||
length += 7;
|
|
||||||
|
|
||||||
hFile = FindFirstFileW(szPath, &FileData);
|
hFile = FindFirstFileW(szPath, &FileData);
|
||||||
if (hFile == INVALID_HANDLE_VALUE)
|
if (hFile == INVALID_HANDLE_VALUE)
|
||||||
|
@ -857,10 +856,12 @@ LoadSoundFiles(HWND hwndDlg)
|
||||||
{
|
{
|
||||||
ptr = FileData.cFileName;
|
ptr = FileData.cFileName;
|
||||||
}
|
}
|
||||||
lResult = SendDlgItemMessageW(hwndDlg, IDC_SOUND_LIST, CB_ADDSTRING, (WPARAM)0, (LPARAM)ptr);
|
lResult = SendDlgItemMessageW(hwndDlg, IDC_SOUND_LIST, CB_ADDSTRING, 0, (LPARAM)ptr);
|
||||||
if (lResult != CB_ERR)
|
if (lResult != CB_ERR)
|
||||||
{
|
{
|
||||||
wcscpy(&szPath[length-1], FileData.cFileName);
|
StringCchCopyW(szPath + (length + CONST_STR_LEN(L"\\media\\")),
|
||||||
|
_countof(szPath) - (length + CONST_STR_LEN(L"\\media\\")),
|
||||||
|
FileData.cFileName);
|
||||||
SendDlgItemMessageW(hwndDlg, IDC_SOUND_LIST, CB_SETITEMDATA, (WPARAM)lResult, (LPARAM)_wcsdup(szPath));
|
SendDlgItemMessageW(hwndDlg, IDC_SOUND_LIST, CB_SETITEMDATA, (WPARAM)lResult, (LPARAM)_wcsdup(szPath));
|
||||||
}
|
}
|
||||||
} while (FindNextFileW(hFile, &FileData) != 0);
|
} while (FindNextFileW(hFile, &FileData) != 0);
|
||||||
|
@ -869,6 +870,31 @@ LoadSoundFiles(HWND hwndDlg)
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static
|
||||||
|
VOID
|
||||||
|
FreeSoundFiles(HWND hwndDlg)
|
||||||
|
{
|
||||||
|
LRESULT lCount, lIndex, lResult;
|
||||||
|
PWCHAR pSoundPath;
|
||||||
|
HWND hwndComboBox;
|
||||||
|
|
||||||
|
hwndComboBox = GetDlgItem(hwndDlg, IDC_SOUND_LIST);
|
||||||
|
lCount = ComboBox_GetCount(hwndComboBox);
|
||||||
|
if (lCount == CB_ERR)
|
||||||
|
return;
|
||||||
|
|
||||||
|
for (lIndex = 0; lIndex < lCount; lIndex++)
|
||||||
|
{
|
||||||
|
lResult = ComboBox_GetItemData(hwndComboBox, lIndex);
|
||||||
|
if (lResult == CB_ERR)
|
||||||
|
{
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
pSoundPath = (PWCHAR)lResult;
|
||||||
|
free(pSoundPath);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
BOOL
|
BOOL
|
||||||
ShowSoundScheme(PGLOBAL_DATA pGlobalData, HWND hwndDlg)
|
ShowSoundScheme(PGLOBAL_DATA pGlobalData, HWND hwndDlg)
|
||||||
|
@ -879,7 +905,7 @@ ShowSoundScheme(PGLOBAL_DATA pGlobalData, HWND hwndDlg)
|
||||||
PLABEL_MAP pLabelMap;
|
PLABEL_MAP pLabelMap;
|
||||||
PLABEL_CONTEXT pLabelContext;
|
PLABEL_CONTEXT pLabelContext;
|
||||||
HWND hDlgCtrl, hList;
|
HWND hDlgCtrl, hList;
|
||||||
TVINSERTSTRUCT tvItem;
|
TVINSERTSTRUCTW tvItem;
|
||||||
HTREEITEM hTreeItem;
|
HTREEITEM hTreeItem;
|
||||||
|
|
||||||
hDlgCtrl = GetDlgItem(hwndDlg, IDC_SOUND_SCHEME);
|
hDlgCtrl = GetDlgItem(hwndDlg, IDC_SOUND_SCHEME);
|
||||||
|
@ -890,20 +916,20 @@ ShowSoundScheme(PGLOBAL_DATA pGlobalData, HWND hwndDlg)
|
||||||
TreeView_SetImageList(hList, pGlobalData->hSoundsImageList, TVSIL_NORMAL);
|
TreeView_SetImageList(hList, pGlobalData->hSoundsImageList, TVSIL_NORMAL);
|
||||||
}
|
}
|
||||||
|
|
||||||
lIndex = SendMessage(hDlgCtrl, CB_GETCURSEL, (WPARAM)0, (LPARAM)0);
|
lIndex = SendMessageW(hDlgCtrl, CB_GETCURSEL, 0, 0);
|
||||||
if (lIndex == CB_ERR)
|
if (lIndex == CB_ERR)
|
||||||
{
|
{
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
lIndex = SendMessage(hDlgCtrl, CB_GETITEMDATA, (WPARAM)lIndex, (LPARAM)0);
|
lIndex = SendMessageW(hDlgCtrl, CB_GETITEMDATA, (WPARAM)lIndex, 0);
|
||||||
if (lIndex == CB_ERR)
|
if (lIndex == CB_ERR)
|
||||||
{
|
{
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
pScheme = (PSOUND_SCHEME_CONTEXT)lIndex;
|
pScheme = (PSOUND_SCHEME_CONTEXT)lIndex;
|
||||||
|
|
||||||
_tcscpy(pGlobalData->szDefault, pScheme->szName);
|
StringCchCopyW(pGlobalData->szDefault, _countof(pGlobalData->szDefault), pScheme->szName);
|
||||||
|
|
||||||
pAppMap = pGlobalData->pAppMap;
|
pAppMap = pGlobalData->pAppMap;
|
||||||
while (pAppMap)
|
while (pAppMap)
|
||||||
|
@ -935,7 +961,7 @@ ShowSoundScheme(PGLOBAL_DATA pGlobalData, HWND hwndDlg)
|
||||||
tvItem.item.state = TVIS_EXPANDED;
|
tvItem.item.state = TVIS_EXPANDED;
|
||||||
tvItem.item.stateMask = TVIS_EXPANDED;
|
tvItem.item.stateMask = TVIS_EXPANDED;
|
||||||
tvItem.item.pszText = pLabelMap->szDesc;
|
tvItem.item.pszText = pLabelMap->szDesc;
|
||||||
if (pLabelContext->szValue && _tcslen(pLabelContext->szValue) > 0)
|
if (pLabelContext->szValue && wcslen(pLabelContext->szValue) > 0)
|
||||||
{
|
{
|
||||||
tvItem.item.iImage = IMAGE_SOUND_ASSIGNED;
|
tvItem.item.iImage = IMAGE_SOUND_ASSIGNED;
|
||||||
tvItem.item.iSelectedImage = IMAGE_SOUND_ASSIGNED;
|
tvItem.item.iSelectedImage = IMAGE_SOUND_ASSIGNED;
|
||||||
|
@ -961,29 +987,30 @@ BOOL
|
||||||
ApplyChanges(HWND hwndDlg)
|
ApplyChanges(HWND hwndDlg)
|
||||||
{
|
{
|
||||||
HKEY hKey, hSubKey;
|
HKEY hKey, hSubKey;
|
||||||
|
DWORD dwType;
|
||||||
LRESULT lIndex;
|
LRESULT lIndex;
|
||||||
PSOUND_SCHEME_CONTEXT pScheme;
|
PSOUND_SCHEME_CONTEXT pScheme;
|
||||||
HWND hDlgCtrl;
|
HWND hDlgCtrl;
|
||||||
PLABEL_CONTEXT pLabelContext;
|
PLABEL_CONTEXT pLabelContext;
|
||||||
TCHAR Buffer[100];
|
WCHAR Buffer[100];
|
||||||
|
|
||||||
hDlgCtrl = GetDlgItem(hwndDlg, IDC_SOUND_SCHEME);
|
hDlgCtrl = GetDlgItem(hwndDlg, IDC_SOUND_SCHEME);
|
||||||
|
|
||||||
lIndex = SendMessage(hDlgCtrl, CB_GETCURSEL, (WPARAM)0, (LPARAM)0);
|
lIndex = SendMessageW(hDlgCtrl, CB_GETCURSEL, 0, 0);
|
||||||
if (lIndex == CB_ERR)
|
if (lIndex == CB_ERR)
|
||||||
{
|
{
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
lIndex = SendMessage(hDlgCtrl, CB_GETITEMDATA, (WPARAM)lIndex, (LPARAM)0);
|
lIndex = SendMessageW(hDlgCtrl, CB_GETITEMDATA, (WPARAM)lIndex, 0);
|
||||||
if (lIndex == CB_ERR)
|
if (lIndex == CB_ERR)
|
||||||
{
|
{
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
pScheme = (PSOUND_SCHEME_CONTEXT)lIndex;
|
pScheme = (PSOUND_SCHEME_CONTEXT)lIndex;
|
||||||
|
|
||||||
if (RegOpenKeyEx(HKEY_CURRENT_USER,
|
if (RegOpenKeyExW(HKEY_CURRENT_USER,
|
||||||
_T("AppEvents\\Schemes"),
|
L"AppEvents\\Schemes",
|
||||||
0,
|
0,
|
||||||
KEY_WRITE,
|
KEY_WRITE,
|
||||||
&hKey) != ERROR_SUCCESS)
|
&hKey) != ERROR_SUCCESS)
|
||||||
|
@ -991,11 +1018,11 @@ ApplyChanges(HWND hwndDlg)
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
RegSetValueEx(hKey, NULL, 0, REG_SZ, (LPBYTE)pScheme->szName, (_tcslen(pScheme->szName) +1) * sizeof(TCHAR));
|
RegSetValueExW(hKey, NULL, 0, REG_SZ, (LPBYTE)pScheme->szName, (wcslen(pScheme->szName) + 1) * sizeof(WCHAR));
|
||||||
RegCloseKey(hKey);
|
RegCloseKey(hKey);
|
||||||
|
|
||||||
if (RegOpenKeyEx(HKEY_CURRENT_USER,
|
if (RegOpenKeyExW(HKEY_CURRENT_USER,
|
||||||
_T("AppEvents\\Schemes\\Apps"),
|
L"AppEvents\\Schemes\\Apps",
|
||||||
0,
|
0,
|
||||||
KEY_WRITE,
|
KEY_WRITE,
|
||||||
&hKey) != ERROR_SUCCESS)
|
&hKey) != ERROR_SUCCESS)
|
||||||
|
@ -1007,11 +1034,12 @@ ApplyChanges(HWND hwndDlg)
|
||||||
|
|
||||||
while (pLabelContext)
|
while (pLabelContext)
|
||||||
{
|
{
|
||||||
_stprintf(Buffer, _T("%s\\%s\\.Current"), pLabelContext->AppMap->szName, pLabelContext->LabelMap->szName);
|
StringCchPrintfW(Buffer, _countof(Buffer), L"%s\\%s\\.Current", pLabelContext->AppMap->szName, pLabelContext->LabelMap->szName);
|
||||||
|
|
||||||
if (RegOpenKeyEx(hKey, Buffer, 0, KEY_WRITE, &hSubKey) == ERROR_SUCCESS)
|
if (RegOpenKeyExW(hKey, Buffer, 0, KEY_WRITE, &hSubKey) == ERROR_SUCCESS)
|
||||||
{
|
{
|
||||||
RegSetValueEx(hSubKey, NULL, 0, REG_EXPAND_SZ, (LPBYTE)pLabelContext->szValue, (_tcslen(pLabelContext->szValue) +1) * sizeof(TCHAR));
|
dwType = (wcschr(pLabelContext->szValue, L'%') ? REG_EXPAND_SZ : REG_SZ);
|
||||||
|
RegSetValueExW(hSubKey, NULL, 0, dwType, (LPBYTE)pLabelContext->szValue, (wcslen(pLabelContext->szValue) + 1) * sizeof(WCHAR));
|
||||||
RegCloseKey(hSubKey);
|
RegCloseKey(hSubKey);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1019,7 +1047,7 @@ ApplyChanges(HWND hwndDlg)
|
||||||
}
|
}
|
||||||
RegCloseKey(hKey);
|
RegCloseKey(hKey);
|
||||||
|
|
||||||
SetWindowLongPtr(hwndDlg, DWLP_MSGRESULT, (LONG_PTR)PSNRET_NOERROR);
|
SetWindowLongPtrW(hwndDlg, DWLP_MSGRESULT, (LONG_PTR)PSNRET_NOERROR);
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1101,20 +1129,20 @@ SoundsDlgProc(HWND hwndDlg,
|
||||||
LPWSTR pFileName;
|
LPWSTR pFileName;
|
||||||
LRESULT lResult;
|
LRESULT lResult;
|
||||||
|
|
||||||
pGlobalData = (PGLOBAL_DATA)GetWindowLongPtr(hwndDlg, DWLP_USER);
|
pGlobalData = (PGLOBAL_DATA)GetWindowLongPtrW(hwndDlg, DWLP_USER);
|
||||||
|
|
||||||
switch (uMsg)
|
switch (uMsg)
|
||||||
{
|
{
|
||||||
case WM_INITDIALOG:
|
case WM_INITDIALOG:
|
||||||
{
|
{
|
||||||
pGlobalData = (PGLOBAL_DATA)HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(GLOBAL_DATA));
|
pGlobalData = (PGLOBAL_DATA)HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(GLOBAL_DATA));
|
||||||
SetWindowLongPtr(hwndDlg, DWLP_USER, (LONG_PTR)pGlobalData);
|
SetWindowLongPtrW(hwndDlg, DWLP_USER, (LONG_PTR)pGlobalData);
|
||||||
|
|
||||||
pGlobalData->NumWavOut = waveOutGetNumDevs();
|
pGlobalData->NumWavOut = waveOutGetNumDevs();
|
||||||
|
|
||||||
SendMessage(GetDlgItem(hwndDlg, IDC_PLAY_SOUND),
|
SendMessageW(GetDlgItem(hwndDlg, IDC_PLAY_SOUND),
|
||||||
BM_SETIMAGE,(WPARAM)IMAGE_ICON,
|
BM_SETIMAGE, (WPARAM)IMAGE_ICON,
|
||||||
(LPARAM)(HANDLE)LoadIcon(hApplet, MAKEINTRESOURCE(IDI_PLAY_ICON)));
|
(LPARAM)(HANDLE)LoadIconW(hApplet, MAKEINTRESOURCEW(IDI_PLAY_ICON)));
|
||||||
|
|
||||||
pGlobalData->hSoundsImageList = InitImageList(IDI_SOUND_SECTION,
|
pGlobalData->hSoundsImageList = InitImageList(IDI_SOUND_SECTION,
|
||||||
IDI_SOUND_ASSIGNED,
|
IDI_SOUND_ASSIGNED,
|
||||||
|
@ -1142,7 +1170,7 @@ SoundsDlgProc(HWND hwndDlg,
|
||||||
ofn.lStructSize = sizeof(ofn);
|
ofn.lStructSize = sizeof(ofn);
|
||||||
ofn.hwndOwner = hwndDlg;
|
ofn.hwndOwner = hwndDlg;
|
||||||
ofn.lpstrFile = filename;
|
ofn.lpstrFile = filename;
|
||||||
ofn.lpstrFile[0] = L'\0';
|
ofn.lpstrFile[0] = UNICODE_NULL;
|
||||||
ofn.nMaxFile = _countof(filename);
|
ofn.nMaxFile = _countof(filename);
|
||||||
LoadStringW(hApplet, IDS_WAVE_FILES_FILTER, szFilter, _countof(szFilter));
|
LoadStringW(hApplet, IDS_WAVE_FILES_FILTER, szFilter, _countof(szFilter));
|
||||||
ofn.lpstrFilter = MakeFilter(szFilter);
|
ofn.lpstrFilter = MakeFilter(szFilter);
|
||||||
|
@ -1152,7 +1180,7 @@ SoundsDlgProc(HWND hwndDlg,
|
||||||
ofn.lpstrInitialDir = L"%SystemRoot%\\Media";
|
ofn.lpstrInitialDir = L"%SystemRoot%\\Media";
|
||||||
ofn.Flags = OFN_EXPLORER | OFN_FILEMUSTEXIST | OFN_HIDEREADONLY;
|
ofn.Flags = OFN_EXPLORER | OFN_FILEMUSTEXIST | OFN_HIDEREADONLY;
|
||||||
|
|
||||||
if (GetOpenFileNameW(&ofn) != FALSE)
|
if (GetOpenFileNameW(&ofn))
|
||||||
{
|
{
|
||||||
// FIXME search if list already contains that sound
|
// FIXME search if list already contains that sound
|
||||||
|
|
||||||
|
@ -1162,12 +1190,12 @@ SoundsDlgProc(HWND hwndDlg,
|
||||||
pFileName++;
|
pFileName++;
|
||||||
|
|
||||||
// add to list
|
// add to list
|
||||||
lResult = SendDlgItemMessageW(hwndDlg, IDC_SOUND_LIST, CB_ADDSTRING, (WPARAM)0, (LPARAM)pFileName);
|
lResult = SendDlgItemMessageW(hwndDlg, IDC_SOUND_LIST, CB_ADDSTRING, 0, (LPARAM)pFileName);
|
||||||
if (lResult != CB_ERR)
|
if (lResult != CB_ERR)
|
||||||
{
|
{
|
||||||
// add path and select item
|
// add path and select item
|
||||||
SendDlgItemMessageW(hwndDlg, IDC_SOUND_LIST, CB_SETITEMDATA, (WPARAM)lResult, (LPARAM)_wcsdup(filename));
|
SendDlgItemMessageW(hwndDlg, IDC_SOUND_LIST, CB_SETITEMDATA, (WPARAM)lResult, (LPARAM)_wcsdup(filename));
|
||||||
SendDlgItemMessageW(hwndDlg, IDC_SOUND_LIST, CB_SETCURSEL, (WPARAM)lResult, (LPARAM)0);
|
SendDlgItemMessageW(hwndDlg, IDC_SOUND_LIST, CB_SETCURSEL, (WPARAM)lResult, 0);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
@ -1184,7 +1212,7 @@ SoundsDlgProc(HWND hwndDlg,
|
||||||
lIndex = ComboBox_GetItemData(GetDlgItem(hwndDlg, IDC_SOUND_LIST), lIndex);
|
lIndex = ComboBox_GetItemData(GetDlgItem(hwndDlg, IDC_SOUND_LIST), lIndex);
|
||||||
if (lIndex != CB_ERR)
|
if (lIndex != CB_ERR)
|
||||||
{
|
{
|
||||||
PlaySound((TCHAR*)lIndex, NULL, SND_FILENAME);
|
PlaySoundW((PWCHAR)lIndex, NULL, SND_FILENAME);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
@ -1192,7 +1220,7 @@ SoundsDlgProc(HWND hwndDlg,
|
||||||
{
|
{
|
||||||
if (HIWORD(wParam) == CBN_SELENDOK)
|
if (HIWORD(wParam) == CBN_SELENDOK)
|
||||||
{
|
{
|
||||||
(void)TreeView_DeleteAllItems(GetDlgItem(hwndDlg, IDC_SCHEME_LIST));
|
TreeView_DeleteAllItems(GetDlgItem(hwndDlg, IDC_SCHEME_LIST));
|
||||||
ShowSoundScheme(pGlobalData, hwndDlg);
|
ShowSoundScheme(pGlobalData, hwndDlg);
|
||||||
EnableWindow(GetDlgItem(hwndDlg, IDC_SOUND_LIST), FALSE);
|
EnableWindow(GetDlgItem(hwndDlg, IDC_SOUND_LIST), FALSE);
|
||||||
EnableWindow(GetDlgItem(hwndDlg, IDC_TEXT_SOUND), FALSE);
|
EnableWindow(GetDlgItem(hwndDlg, IDC_TEXT_SOUND), FALSE);
|
||||||
|
@ -1208,7 +1236,7 @@ SoundsDlgProc(HWND hwndDlg,
|
||||||
{
|
{
|
||||||
PLABEL_CONTEXT pLabelContext;
|
PLABEL_CONTEXT pLabelContext;
|
||||||
HTREEITEM hItem;
|
HTREEITEM hItem;
|
||||||
TVITEM item;
|
TVITEMW item;
|
||||||
LRESULT lIndex;
|
LRESULT lIndex;
|
||||||
|
|
||||||
hItem = TreeView_GetSelection(GetDlgItem(hwndDlg, IDC_SCHEME_LIST));
|
hItem = TreeView_GetSelection(GetDlgItem(hwndDlg, IDC_SCHEME_LIST));
|
||||||
|
@ -1247,12 +1275,12 @@ SoundsDlgProc(HWND hwndDlg,
|
||||||
EnableWindow(GetDlgItem(hwndDlg, IDC_PLAY_SOUND), FALSE);
|
EnableWindow(GetDlgItem(hwndDlg, IDC_PLAY_SOUND), FALSE);
|
||||||
}
|
}
|
||||||
|
|
||||||
pLabelContext->szValue[0] = L'\0';
|
pLabelContext->szValue[0] = UNICODE_NULL;
|
||||||
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (_tcsicmp(pLabelContext->szValue, (TCHAR*)lResult) || (lIndex != pLabelContext->szValue[0]))
|
if (_wcsicmp(pLabelContext->szValue, (PWCHAR)lResult) || (lIndex != pLabelContext->szValue[0]))
|
||||||
{
|
{
|
||||||
/* Update the tree view item image */
|
/* Update the tree view item image */
|
||||||
item.mask = TVIF_IMAGE | TVIF_SELECTEDIMAGE;
|
item.mask = TVIF_IMAGE | TVIF_SELECTEDIMAGE;
|
||||||
|
@ -1265,10 +1293,10 @@ SoundsDlgProc(HWND hwndDlg,
|
||||||
///
|
///
|
||||||
/// Should store in current member
|
/// Should store in current member
|
||||||
///
|
///
|
||||||
_tcscpy(pLabelContext->szValue, (TCHAR*)lResult);
|
StringCchCopyW(pLabelContext->szValue, _countof(pLabelContext->szValue), (PWCHAR)lResult);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (_tcslen((TCHAR*)lResult) && lIndex != 0 && pGlobalData->NumWavOut != 0)
|
if (wcslen((PWCHAR)lResult) && lIndex != 0 && pGlobalData->NumWavOut != 0)
|
||||||
{
|
{
|
||||||
EnableWindow(GetDlgItem(hwndDlg, IDC_PLAY_SOUND), TRUE);
|
EnableWindow(GetDlgItem(hwndDlg, IDC_PLAY_SOUND), TRUE);
|
||||||
}
|
}
|
||||||
|
@ -1285,6 +1313,7 @@ SoundsDlgProc(HWND hwndDlg,
|
||||||
}
|
}
|
||||||
case WM_DESTROY:
|
case WM_DESTROY:
|
||||||
{
|
{
|
||||||
|
FreeSoundFiles(hwndDlg);
|
||||||
FreeSoundProfiles(hwndDlg);
|
FreeSoundProfiles(hwndDlg);
|
||||||
FreeAppMap(pGlobalData);
|
FreeAppMap(pGlobalData);
|
||||||
FreeLabelMap(pGlobalData);
|
FreeLabelMap(pGlobalData);
|
||||||
|
@ -1296,11 +1325,11 @@ SoundsDlgProc(HWND hwndDlg,
|
||||||
case WM_NOTIFY:
|
case WM_NOTIFY:
|
||||||
{
|
{
|
||||||
PLABEL_CONTEXT pLabelContext;
|
PLABEL_CONTEXT pLabelContext;
|
||||||
TCHAR * ptr;
|
PWCHAR ptr;
|
||||||
|
|
||||||
LPNMHDR lpnm = (LPNMHDR)lParam;
|
LPNMHDR lpnm = (LPNMHDR)lParam;
|
||||||
|
|
||||||
switch(lpnm->code)
|
switch (lpnm->code)
|
||||||
{
|
{
|
||||||
case PSN_APPLY:
|
case PSN_APPLY:
|
||||||
{
|
{
|
||||||
|
@ -1309,7 +1338,7 @@ SoundsDlgProc(HWND hwndDlg,
|
||||||
}
|
}
|
||||||
case TVN_SELCHANGED:
|
case TVN_SELCHANGED:
|
||||||
{
|
{
|
||||||
LPNMTREEVIEW nm = (LPNMTREEVIEW)lParam;
|
LPNMTREEVIEWW nm = (LPNMTREEVIEWW)lParam;
|
||||||
LRESULT lCount, lIndex, lResult;
|
LRESULT lCount, lIndex, lResult;
|
||||||
|
|
||||||
pLabelContext = (PLABEL_CONTEXT)nm->itemNew.lParam;
|
pLabelContext = (PLABEL_CONTEXT)nm->itemNew.lParam;
|
||||||
|
@ -1326,7 +1355,7 @@ SoundsDlgProc(HWND hwndDlg,
|
||||||
EnableWindow(GetDlgItem(hwndDlg, IDC_TEXT_SOUND), TRUE);
|
EnableWindow(GetDlgItem(hwndDlg, IDC_TEXT_SOUND), TRUE);
|
||||||
EnableWindow(GetDlgItem(hwndDlg, IDC_BROWSE_SOUND), TRUE);
|
EnableWindow(GetDlgItem(hwndDlg, IDC_BROWSE_SOUND), TRUE);
|
||||||
|
|
||||||
if (_tcslen(pLabelContext->szValue) == 0)
|
if (wcslen(pLabelContext->szValue) == 0)
|
||||||
{
|
{
|
||||||
lIndex = ComboBox_SetCurSel(GetDlgItem(hwndDlg, IDC_SOUND_LIST), 0);
|
lIndex = ComboBox_SetCurSel(GetDlgItem(hwndDlg, IDC_SOUND_LIST), 0);
|
||||||
EnableWindow(GetDlgItem(hwndDlg, IDC_PLAY_SOUND), FALSE);
|
EnableWindow(GetDlgItem(hwndDlg, IDC_PLAY_SOUND), FALSE);
|
||||||
|
@ -1343,14 +1372,14 @@ SoundsDlgProc(HWND hwndDlg,
|
||||||
if (lResult == CB_ERR || lResult == 0)
|
if (lResult == CB_ERR || lResult == 0)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
if (!_tcscmp((TCHAR*)lResult, pLabelContext->szValue))
|
if (!wcscmp((PWCHAR)lResult, pLabelContext->szValue))
|
||||||
{
|
{
|
||||||
ComboBox_SetCurSel(GetDlgItem(hwndDlg, IDC_SOUND_LIST), lIndex);
|
ComboBox_SetCurSel(GetDlgItem(hwndDlg, IDC_SOUND_LIST), lIndex);
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
ptr = _tcsrchr(pLabelContext->szValue, _T('\\'));
|
ptr = wcsrchr(pLabelContext->szValue, L'\\');
|
||||||
if (ptr)
|
if (ptr)
|
||||||
{
|
{
|
||||||
ptr++;
|
ptr++;
|
||||||
|
@ -1363,7 +1392,7 @@ SoundsDlgProc(HWND hwndDlg,
|
||||||
lIndex = ComboBox_AddString(GetDlgItem(hwndDlg, IDC_SOUND_LIST), ptr);
|
lIndex = ComboBox_AddString(GetDlgItem(hwndDlg, IDC_SOUND_LIST), ptr);
|
||||||
if (lIndex != CB_ERR)
|
if (lIndex != CB_ERR)
|
||||||
{
|
{
|
||||||
ComboBox_SetItemData(GetDlgItem(hwndDlg, IDC_SOUND_LIST), lIndex, _tcsdup(pLabelContext->szValue));
|
ComboBox_SetItemData(GetDlgItem(hwndDlg, IDC_SOUND_LIST), lIndex, _wcsdup(pLabelContext->szValue));
|
||||||
ComboBox_SetCurSel(GetDlgItem(hwndDlg, IDC_SOUND_LIST), lIndex);
|
ComboBox_SetCurSel(GetDlgItem(hwndDlg, IDC_SOUND_LIST), lIndex);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
|
@ -26,38 +26,38 @@ OnInitDialog(
|
||||||
PPAGE_DATA pPageData,
|
PPAGE_DATA pPageData,
|
||||||
HWND hwndDlg)
|
HWND hwndDlg)
|
||||||
{
|
{
|
||||||
TCHAR szBuffer[256];
|
WCHAR szBuffer[256];
|
||||||
MIXERLINE mxln;
|
MIXERLINEW mxln;
|
||||||
MIXERCONTROL mxc;
|
MIXERCONTROLW mxc;
|
||||||
MIXERLINECONTROLS mxlctrl;
|
MIXERLINECONTROLSW mxlctrl;
|
||||||
MIXERCONTROLDETAILS mxcd;
|
MIXERCONTROLDETAILS mxcd;
|
||||||
INT i, j;
|
INT i, j;
|
||||||
|
|
||||||
/* Open the mixer */
|
/* Open the mixer */
|
||||||
if (mixerOpen(&pPageData->hMixer, 0, PtrToUlong(hwndDlg), 0, MIXER_OBJECTF_MIXER | CALLBACK_WINDOW) != MMSYSERR_NOERROR)
|
if (mixerOpen(&pPageData->hMixer, 0, PtrToUlong(hwndDlg), 0, MIXER_OBJECTF_MIXER | CALLBACK_WINDOW) != MMSYSERR_NOERROR)
|
||||||
{
|
{
|
||||||
MessageBox(hwndDlg, _T("Cannot open mixer"), NULL, MB_OK);
|
MessageBoxW(hwndDlg, L"Cannot open mixer", NULL, MB_OK);
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Retrieve the mixer information */
|
/* Retrieve the mixer information */
|
||||||
mxln.cbStruct = sizeof(MIXERLINE);
|
mxln.cbStruct = sizeof(MIXERLINEW);
|
||||||
mxln.dwComponentType = MIXERLINE_COMPONENTTYPE_DST_SPEAKERS;
|
mxln.dwComponentType = MIXERLINE_COMPONENTTYPE_DST_SPEAKERS;
|
||||||
|
|
||||||
if (mixerGetLineInfo((HMIXEROBJ)pPageData->hMixer, &mxln, MIXER_OBJECTF_HMIXER | MIXER_GETLINEINFOF_COMPONENTTYPE) != MMSYSERR_NOERROR)
|
if (mixerGetLineInfoW((HMIXEROBJ)pPageData->hMixer, &mxln, MIXER_OBJECTF_HMIXER | MIXER_GETLINEINFOF_COMPONENTTYPE) != MMSYSERR_NOERROR)
|
||||||
return FALSE;
|
return FALSE;
|
||||||
|
|
||||||
pPageData->volumeChannels = mxln.cChannels;
|
pPageData->volumeChannels = mxln.cChannels;
|
||||||
|
|
||||||
/* Retrieve the line information */
|
/* Retrieve the line information */
|
||||||
mxlctrl.cbStruct = sizeof(MIXERLINECONTROLS);
|
mxlctrl.cbStruct = sizeof(MIXERLINECONTROLSW);
|
||||||
mxlctrl.dwLineID = mxln.dwLineID;
|
mxlctrl.dwLineID = mxln.dwLineID;
|
||||||
mxlctrl.dwControlType = MIXERCONTROL_CONTROLTYPE_VOLUME;
|
mxlctrl.dwControlType = MIXERCONTROL_CONTROLTYPE_VOLUME;
|
||||||
mxlctrl.cControls = 1;
|
mxlctrl.cControls = 1;
|
||||||
mxlctrl.cbmxctrl = sizeof(MIXERCONTROL);
|
mxlctrl.cbmxctrl = sizeof(MIXERCONTROLW);
|
||||||
mxlctrl.pamxctrl = &mxc;
|
mxlctrl.pamxctrl = &mxc;
|
||||||
|
|
||||||
if (mixerGetLineControls((HMIXEROBJ)pPageData->hMixer, &mxlctrl, MIXER_OBJECTF_HMIXER | MIXER_GETLINECONTROLSF_ONEBYTYPE) != MMSYSERR_NOERROR)
|
if (mixerGetLineControlsW((HMIXEROBJ)pPageData->hMixer, &mxlctrl, MIXER_OBJECTF_HMIXER | MIXER_GETLINECONTROLSF_ONEBYTYPE) != MMSYSERR_NOERROR)
|
||||||
return FALSE;
|
return FALSE;
|
||||||
|
|
||||||
pPageData->volumeControlID = mxc.dwControlID;
|
pPageData->volumeControlID = mxc.dwControlID;
|
||||||
|
@ -80,7 +80,7 @@ OnInitDialog(
|
||||||
mxcd.cbDetails = sizeof(MIXERCONTROLDETAILS_UNSIGNED);
|
mxcd.cbDetails = sizeof(MIXERCONTROLDETAILS_UNSIGNED);
|
||||||
mxcd.paDetails = pPageData->volumeValues;
|
mxcd.paDetails = pPageData->volumeValues;
|
||||||
|
|
||||||
if (mixerGetControlDetails((HMIXEROBJ)pPageData->hMixer, &mxcd, MIXER_OBJECTF_HMIXER | MIXER_GETCONTROLDETAILSF_VALUE) != MMSYSERR_NOERROR)
|
if (mixerGetControlDetailsW((HMIXEROBJ)pPageData->hMixer, &mxcd, MIXER_OBJECTF_HMIXER | MIXER_GETCONTROLDETAILSF_VALUE) != MMSYSERR_NOERROR)
|
||||||
return FALSE;
|
return FALSE;
|
||||||
|
|
||||||
/* Initialize the channels */
|
/* Initialize the channels */
|
||||||
|
@ -89,14 +89,14 @@ OnInitDialog(
|
||||||
j = i * 4;
|
j = i * 4;
|
||||||
|
|
||||||
/* Set the channel name */
|
/* Set the channel name */
|
||||||
LoadString(hApplet, IDS_SPEAKER_LEFT + i, szBuffer, _countof(szBuffer));
|
LoadStringW(hApplet, IDS_SPEAKER_LEFT + i, szBuffer, _countof(szBuffer));
|
||||||
SetWindowText(GetDlgItem(hwndDlg, 9472 + j), szBuffer);
|
SetWindowTextW(GetDlgItem(hwndDlg, 9472 + j), szBuffer);
|
||||||
|
|
||||||
/* Initialize the channel trackbar */
|
/* Initialize the channel trackbar */
|
||||||
SendDlgItemMessage(hwndDlg, 9475 + j, TBM_SETRANGE, (WPARAM)TRUE, (LPARAM)MAKELONG(VOLUME_MIN, VOLUME_MAX));
|
SendDlgItemMessageW(hwndDlg, 9475 + j, TBM_SETRANGE, (WPARAM)TRUE, MAKELPARAM(VOLUME_MIN, VOLUME_MAX));
|
||||||
SendDlgItemMessage(hwndDlg, 9475 + j, TBM_SETTICFREQ, VOLUME_TICFREQ, 0);
|
SendDlgItemMessageW(hwndDlg, 9475 + j, TBM_SETTICFREQ, VOLUME_TICFREQ, 0);
|
||||||
SendDlgItemMessage(hwndDlg, 9475 + j, TBM_SETPAGESIZE, 0, VOLUME_PAGESIZE);
|
SendDlgItemMessageW(hwndDlg, 9475 + j, TBM_SETPAGESIZE, 0, VOLUME_PAGESIZE);
|
||||||
SendDlgItemMessage(hwndDlg, 9475 + j, TBM_SETPOS, (WPARAM)TRUE, (LPARAM)(pPageData->volumeValues[i].dwValue - pPageData->volumeMinimum) / pPageData->volumeStep);
|
SendDlgItemMessageW(hwndDlg, 9475 + j, TBM_SETPOS, (WPARAM)TRUE, (LPARAM)(pPageData->volumeValues[i].dwValue - pPageData->volumeMinimum) / pPageData->volumeStep);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Hide the unused controls */
|
/* Hide the unused controls */
|
||||||
|
@ -130,14 +130,14 @@ OnMixerControlChange(
|
||||||
mxcd.cbDetails = sizeof(MIXERCONTROLDETAILS_UNSIGNED);
|
mxcd.cbDetails = sizeof(MIXERCONTROLDETAILS_UNSIGNED);
|
||||||
mxcd.paDetails = pPageData->volumeValues;
|
mxcd.paDetails = pPageData->volumeValues;
|
||||||
|
|
||||||
if (mixerGetControlDetails((HMIXEROBJ)pPageData->hMixer, &mxcd, MIXER_OBJECTF_HMIXER | MIXER_GETCONTROLDETAILSF_VALUE) != MMSYSERR_NOERROR)
|
if (mixerGetControlDetailsW((HMIXEROBJ)pPageData->hMixer, &mxcd, MIXER_OBJECTF_HMIXER | MIXER_GETCONTROLDETAILSF_VALUE) != MMSYSERR_NOERROR)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
for (i = 0; i < pPageData->volumeChannels; i++)
|
for (i = 0; i < pPageData->volumeChannels; i++)
|
||||||
{
|
{
|
||||||
j = i * 4;
|
j = i * 4;
|
||||||
|
|
||||||
SendDlgItemMessage(hwndDlg, 9475 + j, TBM_SETPOS, (WPARAM)TRUE, (LPARAM)(pPageData->volumeValues[i].dwValue - pPageData->volumeMinimum) / pPageData->volumeStep);
|
SendDlgItemMessageW(hwndDlg, 9475 + j, TBM_SETPOS, (WPARAM)TRUE, (LPARAM)(pPageData->volumeValues[i].dwValue - pPageData->volumeMinimum) / pPageData->volumeStep);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -154,14 +154,14 @@ OnHScroll(
|
||||||
DWORD dwValue, dwPosition;
|
DWORD dwValue, dwPosition;
|
||||||
INT id, idx, i, j;
|
INT id, idx, i, j;
|
||||||
|
|
||||||
id = (INT)GetWindowLongPtr((HWND)lParam, GWLP_ID);
|
id = (INT)GetWindowLongPtrW((HWND)lParam, GWLP_ID);
|
||||||
if (id < 9475 || id > 9503)
|
if (id < 9475 || id > 9503)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if ((id - 9475) % 4 != 0)
|
if ((id - 9475) % 4 != 0)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
dwPosition = (DWORD)SendDlgItemMessage(hwndDlg, id, TBM_GETPOS, 0, 0);
|
dwPosition = (DWORD)SendDlgItemMessageW(hwndDlg, id, TBM_GETPOS, 0, 0);
|
||||||
|
|
||||||
if (dwPosition == VOLUME_MIN)
|
if (dwPosition == VOLUME_MIN)
|
||||||
dwValue = pPageData->volumeMinimum;
|
dwValue = pPageData->volumeMinimum;
|
||||||
|
@ -176,7 +176,7 @@ OnHScroll(
|
||||||
{
|
{
|
||||||
j = 9475 + (i * 4);
|
j = 9475 + (i * 4);
|
||||||
if (j != id)
|
if (j != id)
|
||||||
SendDlgItemMessage(hwndDlg, j, TBM_SETPOS, (WPARAM)TRUE, dwPosition);
|
SendDlgItemMessageW(hwndDlg, j, TBM_SETPOS, (WPARAM)TRUE, dwPosition);
|
||||||
|
|
||||||
pPageData->volumeValues[i].dwValue = dwValue;
|
pPageData->volumeValues[i].dwValue = dwValue;
|
||||||
}
|
}
|
||||||
|
@ -235,15 +235,13 @@ SpeakerVolumeDlgProc(
|
||||||
{
|
{
|
||||||
PPAGE_DATA pPageData;
|
PPAGE_DATA pPageData;
|
||||||
|
|
||||||
UNREFERENCED_PARAMETER(wParam);
|
pPageData = (PPAGE_DATA)GetWindowLongPtrW(hwndDlg, DWLP_USER);
|
||||||
|
|
||||||
pPageData = (PPAGE_DATA)GetWindowLongPtr(hwndDlg, DWLP_USER);
|
switch (uMsg)
|
||||||
|
|
||||||
switch(uMsg)
|
|
||||||
{
|
{
|
||||||
case WM_INITDIALOG:
|
case WM_INITDIALOG:
|
||||||
pPageData = (PPAGE_DATA)HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(PAGE_DATA));
|
pPageData = (PPAGE_DATA)HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(PAGE_DATA));
|
||||||
SetWindowLongPtr(hwndDlg, DWLP_USER, (LONG_PTR)pPageData);
|
SetWindowLongPtrW(hwndDlg, DWLP_USER, (LONG_PTR)pPageData);
|
||||||
|
|
||||||
if (pPageData)
|
if (pPageData)
|
||||||
{
|
{
|
||||||
|
@ -262,7 +260,7 @@ SpeakerVolumeDlgProc(
|
||||||
|
|
||||||
HeapFree(GetProcessHeap(), 0, pPageData);
|
HeapFree(GetProcessHeap(), 0, pPageData);
|
||||||
pPageData = NULL;
|
pPageData = NULL;
|
||||||
SetWindowLongPtr(hwndDlg, DWLP_USER, (LONG_PTR)NULL);
|
SetWindowLongPtrW(hwndDlg, DWLP_USER, (LONG_PTR)NULL);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
@ -279,7 +277,7 @@ SpeakerVolumeDlgProc(
|
||||||
{
|
{
|
||||||
case 9504:
|
case 9504:
|
||||||
if (HIWORD(wParam) == BN_CLICKED)
|
if (HIWORD(wParam) == BN_CLICKED)
|
||||||
pPageData->volumeSync = (SendDlgItemMessage(hwndDlg, 9504, BM_GETCHECK, 0, 0) == BST_CHECKED);
|
pPageData->volumeSync = (SendDlgItemMessageW(hwndDlg, 9504, BM_GETCHECK, 0, 0) == BST_CHECKED);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 9505:
|
case 9505:
|
||||||
|
@ -306,16 +304,16 @@ INT_PTR
|
||||||
SpeakerVolume(
|
SpeakerVolume(
|
||||||
HWND hwndDlg)
|
HWND hwndDlg)
|
||||||
{
|
{
|
||||||
PROPSHEETPAGE psp[1];
|
PROPSHEETPAGEW psp[1];
|
||||||
PROPSHEETHEADER psh;
|
PROPSHEETHEADERW psh;
|
||||||
|
|
||||||
ZeroMemory(&psh, sizeof(PROPSHEETHEADER));
|
ZeroMemory(&psh, sizeof(PROPSHEETHEADERW));
|
||||||
psh.dwSize = sizeof(PROPSHEETHEADER);
|
psh.dwSize = sizeof(PROPSHEETHEADERW);
|
||||||
psh.dwFlags = PSH_PROPSHEETPAGE;
|
psh.dwFlags = PSH_PROPSHEETPAGE;
|
||||||
psh.hwndParent = hwndDlg;
|
psh.hwndParent = hwndDlg;
|
||||||
psh.hInstance = hApplet;
|
psh.hInstance = hApplet;
|
||||||
psh.pszCaption = MAKEINTRESOURCE(IDS_SPEAKER_VOLUME);
|
psh.pszCaption = MAKEINTRESOURCE(IDS_SPEAKER_VOLUME);
|
||||||
psh.nPages = sizeof(psp) / sizeof(PROPSHEETPAGE);
|
psh.nPages = _countof(psp);
|
||||||
psh.nStartPage = 0;
|
psh.nStartPage = 0;
|
||||||
psh.ppsp = psp;
|
psh.ppsp = psp;
|
||||||
|
|
||||||
|
@ -324,5 +322,5 @@ SpeakerVolume(
|
||||||
psp[0].hInstance = hApplet;
|
psp[0].hInstance = hApplet;
|
||||||
psp[0].pszTitle = MAKEINTRESOURCE(IDS_SPEAKER_VOLUME);
|
psp[0].pszTitle = MAKEINTRESOURCE(IDS_SPEAKER_VOLUME);
|
||||||
|
|
||||||
return (LONG)(PropertySheet(&psh) != -1);
|
return (LONG)(PropertySheetW(&psh) != -1);
|
||||||
}
|
}
|
||||||
|
|
|
@ -19,8 +19,7 @@ VoiceDlgProc(HWND hwndDlg,
|
||||||
{
|
{
|
||||||
UNREFERENCED_PARAMETER(lParam);
|
UNREFERENCED_PARAMETER(lParam);
|
||||||
UNREFERENCED_PARAMETER(wParam);
|
UNREFERENCED_PARAMETER(wParam);
|
||||||
UNREFERENCED_PARAMETER(hwndDlg);
|
switch (uMsg)
|
||||||
switch(uMsg)
|
|
||||||
{
|
{
|
||||||
case WM_INITDIALOG:
|
case WM_INITDIALOG:
|
||||||
{
|
{
|
||||||
|
|
|
@ -51,8 +51,8 @@ InitImageInfo(PIMGINFO ImgInfo)
|
||||||
|
|
||||||
ZeroMemory(ImgInfo, sizeof(*ImgInfo));
|
ZeroMemory(ImgInfo, sizeof(*ImgInfo));
|
||||||
|
|
||||||
ImgInfo->hBitmap = LoadImage(hApplet,
|
ImgInfo->hBitmap = LoadImageW(hApplet,
|
||||||
MAKEINTRESOURCE(IDB_SPEAKIMG),
|
MAKEINTRESOURCEW(IDB_SPEAKIMG),
|
||||||
IMAGE_BITMAP,
|
IMAGE_BITMAP,
|
||||||
0,
|
0,
|
||||||
0,
|
0,
|
||||||
|
@ -60,7 +60,7 @@ InitImageInfo(PIMGINFO ImgInfo)
|
||||||
|
|
||||||
if (ImgInfo->hBitmap != NULL)
|
if (ImgInfo->hBitmap != NULL)
|
||||||
{
|
{
|
||||||
GetObject(ImgInfo->hBitmap, sizeof(BITMAP), &bitmap);
|
GetObjectW(ImgInfo->hBitmap, sizeof(BITMAP), &bitmap);
|
||||||
|
|
||||||
ImgInfo->cxSource = bitmap.bmWidth;
|
ImgInfo->cxSource = bitmap.bmWidth;
|
||||||
ImgInfo->cySource = bitmap.bmHeight;
|
ImgInfo->cySource = bitmap.bmHeight;
|
||||||
|
@ -71,28 +71,30 @@ InitImageInfo(PIMGINFO ImgInfo)
|
||||||
VOID
|
VOID
|
||||||
GetMuteControl(PGLOBAL_DATA pGlobalData)
|
GetMuteControl(PGLOBAL_DATA pGlobalData)
|
||||||
{
|
{
|
||||||
MIXERLINE mxln;
|
MIXERLINEW mxln;
|
||||||
MIXERCONTROL mxc;
|
MIXERCONTROLW mxc;
|
||||||
MIXERLINECONTROLS mxlctrl;
|
MIXERLINECONTROLSW mxlctrl;
|
||||||
|
|
||||||
if (pGlobalData->hMixer == NULL)
|
if (pGlobalData->hMixer == NULL)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
mxln.cbStruct = sizeof(MIXERLINE);
|
mxln.cbStruct = sizeof(MIXERLINEW);
|
||||||
mxln.dwComponentType = MIXERLINE_COMPONENTTYPE_DST_SPEAKERS;
|
mxln.dwComponentType = MIXERLINE_COMPONENTTYPE_DST_SPEAKERS;
|
||||||
|
|
||||||
if (mixerGetLineInfo((HMIXEROBJ)pGlobalData->hMixer, &mxln, MIXER_OBJECTF_HMIXER | MIXER_GETLINEINFOF_COMPONENTTYPE)
|
if (mixerGetLineInfoW((HMIXEROBJ)pGlobalData->hMixer, &mxln, MIXER_OBJECTF_HMIXER | MIXER_GETLINEINFOF_COMPONENTTYPE)
|
||||||
!= MMSYSERR_NOERROR) return;
|
!= MMSYSERR_NOERROR)
|
||||||
|
return;
|
||||||
|
|
||||||
mxlctrl.cbStruct = sizeof(MIXERLINECONTROLS);
|
mxlctrl.cbStruct = sizeof(MIXERLINECONTROLSW);
|
||||||
mxlctrl.dwLineID = mxln.dwLineID;
|
mxlctrl.dwLineID = mxln.dwLineID;
|
||||||
mxlctrl.dwControlType = MIXERCONTROL_CONTROLTYPE_MUTE;
|
mxlctrl.dwControlType = MIXERCONTROL_CONTROLTYPE_MUTE;
|
||||||
mxlctrl.cControls = 1;
|
mxlctrl.cControls = 1;
|
||||||
mxlctrl.cbmxctrl = sizeof(MIXERCONTROL);
|
mxlctrl.cbmxctrl = sizeof(MIXERCONTROLW);
|
||||||
mxlctrl.pamxctrl = &mxc;
|
mxlctrl.pamxctrl = &mxc;
|
||||||
|
|
||||||
if (mixerGetLineControls((HMIXEROBJ)pGlobalData->hMixer, &mxlctrl, MIXER_OBJECTF_HMIXER | MIXER_GETLINECONTROLSF_ONEBYTYPE)
|
if (mixerGetLineControlsW((HMIXEROBJ)pGlobalData->hMixer, &mxlctrl, MIXER_OBJECTF_HMIXER | MIXER_GETLINECONTROLSF_ONEBYTYPE)
|
||||||
!= MMSYSERR_NOERROR) return;
|
!= MMSYSERR_NOERROR)
|
||||||
|
return;
|
||||||
|
|
||||||
pGlobalData->muteControlID = mxc.dwControlID;
|
pGlobalData->muteControlID = mxc.dwControlID;
|
||||||
}
|
}
|
||||||
|
@ -114,7 +116,7 @@ GetMuteState(PGLOBAL_DATA pGlobalData)
|
||||||
mxcd.cbDetails = sizeof(MIXERCONTROLDETAILS_BOOLEAN);
|
mxcd.cbDetails = sizeof(MIXERCONTROLDETAILS_BOOLEAN);
|
||||||
mxcd.paDetails = &mxcdMute;
|
mxcd.paDetails = &mxcdMute;
|
||||||
|
|
||||||
if (mixerGetControlDetails((HMIXEROBJ)pGlobalData->hMixer, &mxcd, MIXER_OBJECTF_HMIXER | MIXER_GETCONTROLDETAILSF_VALUE)
|
if (mixerGetControlDetailsW((HMIXEROBJ)pGlobalData->hMixer, &mxcd, MIXER_OBJECTF_HMIXER | MIXER_GETCONTROLDETAILSF_VALUE)
|
||||||
!= MMSYSERR_NOERROR)
|
!= MMSYSERR_NOERROR)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
@ -147,28 +149,28 @@ SwitchMuteState(PGLOBAL_DATA pGlobalData)
|
||||||
VOID
|
VOID
|
||||||
GetVolumeControl(PGLOBAL_DATA pGlobalData)
|
GetVolumeControl(PGLOBAL_DATA pGlobalData)
|
||||||
{
|
{
|
||||||
MIXERLINE mxln;
|
MIXERLINEW mxln;
|
||||||
MIXERCONTROL mxc;
|
MIXERCONTROLW mxc;
|
||||||
MIXERLINECONTROLS mxlc;
|
MIXERLINECONTROLSW mxlc;
|
||||||
|
|
||||||
if (pGlobalData->hMixer == NULL)
|
if (pGlobalData->hMixer == NULL)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
mxln.cbStruct = sizeof(MIXERLINE);
|
mxln.cbStruct = sizeof(MIXERLINEW);
|
||||||
mxln.dwComponentType = MIXERLINE_COMPONENTTYPE_DST_SPEAKERS;
|
mxln.dwComponentType = MIXERLINE_COMPONENTTYPE_DST_SPEAKERS;
|
||||||
if (mixerGetLineInfo((HMIXEROBJ)pGlobalData->hMixer, &mxln, MIXER_OBJECTF_HMIXER | MIXER_GETLINEINFOF_COMPONENTTYPE)
|
if (mixerGetLineInfoW((HMIXEROBJ)pGlobalData->hMixer, &mxln, MIXER_OBJECTF_HMIXER | MIXER_GETLINEINFOF_COMPONENTTYPE)
|
||||||
!= MMSYSERR_NOERROR)
|
!= MMSYSERR_NOERROR)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
pGlobalData->volumeChannels = mxln.cChannels;
|
pGlobalData->volumeChannels = mxln.cChannels;
|
||||||
|
|
||||||
mxlc.cbStruct = sizeof(MIXERLINECONTROLS);
|
mxlc.cbStruct = sizeof(MIXERLINECONTROLSW);
|
||||||
mxlc.dwLineID = mxln.dwLineID;
|
mxlc.dwLineID = mxln.dwLineID;
|
||||||
mxlc.dwControlType = MIXERCONTROL_CONTROLTYPE_VOLUME;
|
mxlc.dwControlType = MIXERCONTROL_CONTROLTYPE_VOLUME;
|
||||||
mxlc.cControls = 1;
|
mxlc.cControls = 1;
|
||||||
mxlc.cbmxctrl = sizeof(MIXERCONTROL);
|
mxlc.cbmxctrl = sizeof(MIXERCONTROLW);
|
||||||
mxlc.pamxctrl = &mxc;
|
mxlc.pamxctrl = &mxc;
|
||||||
if (mixerGetLineControls((HMIXEROBJ)pGlobalData->hMixer, &mxlc, MIXER_OBJECTF_HMIXER | MIXER_GETLINECONTROLSF_ONEBYTYPE)
|
if (mixerGetLineControlsW((HMIXEROBJ)pGlobalData->hMixer, &mxlc, MIXER_OBJECTF_HMIXER | MIXER_GETLINECONTROLSF_ONEBYTYPE)
|
||||||
!= MMSYSERR_NOERROR)
|
!= MMSYSERR_NOERROR)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
@ -215,7 +217,7 @@ GetVolumeValue(
|
||||||
mxcd.cbDetails = sizeof(MIXERCONTROLDETAILS_UNSIGNED);
|
mxcd.cbDetails = sizeof(MIXERCONTROLDETAILS_UNSIGNED);
|
||||||
mxcd.paDetails = pGlobalData->volumePreviousValues;
|
mxcd.paDetails = pGlobalData->volumePreviousValues;
|
||||||
|
|
||||||
if (mixerGetControlDetails((HMIXEROBJ)pGlobalData->hMixer, &mxcd, MIXER_OBJECTF_HMIXER | MIXER_GETCONTROLDETAILSF_VALUE)
|
if (mixerGetControlDetailsW((HMIXEROBJ)pGlobalData->hMixer, &mxcd, MIXER_OBJECTF_HMIXER | MIXER_GETCONTROLDETAILSF_VALUE)
|
||||||
!= MMSYSERR_NOERROR)
|
!= MMSYSERR_NOERROR)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
@ -259,7 +261,7 @@ SetVolumeValue(PGLOBAL_DATA pGlobalData,
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
pGlobalData->volumeCurrentValues[i].dwValue =
|
pGlobalData->volumeCurrentValues[i].dwValue =
|
||||||
pGlobalData->volumePreviousValues[i].dwValue * dwVolume / pGlobalData-> maxVolume;
|
pGlobalData->volumePreviousValues[i].dwValue * dwVolume / pGlobalData->maxVolume;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -331,14 +333,14 @@ VOID
|
||||||
InitVolumeControls(HWND hwndDlg, PGLOBAL_DATA pGlobalData)
|
InitVolumeControls(HWND hwndDlg, PGLOBAL_DATA pGlobalData)
|
||||||
{
|
{
|
||||||
UINT NumMixers;
|
UINT NumMixers;
|
||||||
MIXERCAPS mxc;
|
MIXERCAPSW mxc;
|
||||||
TCHAR szNoDevices[256];
|
WCHAR szNoDevices[256];
|
||||||
|
|
||||||
LoadString(hApplet, IDS_NO_DEVICES, szNoDevices, _countof(szNoDevices));
|
LoadStringW(hApplet, IDS_NO_DEVICES, szNoDevices, _countof(szNoDevices));
|
||||||
|
|
||||||
SendDlgItemMessage(hwndDlg, IDC_VOLUME_TRACKBAR, TBM_SETRANGE, (WPARAM)TRUE, (LPARAM)MAKELONG(VOLUME_MIN, VOLUME_MAX));
|
SendDlgItemMessageW(hwndDlg, IDC_VOLUME_TRACKBAR, TBM_SETRANGE, (WPARAM)TRUE, (LPARAM)MAKELONG(VOLUME_MIN, VOLUME_MAX));
|
||||||
SendDlgItemMessage(hwndDlg, IDC_VOLUME_TRACKBAR, TBM_SETTICFREQ, VOLUME_TICFREQ, 0);
|
SendDlgItemMessageW(hwndDlg, IDC_VOLUME_TRACKBAR, TBM_SETTICFREQ, VOLUME_TICFREQ, 0);
|
||||||
SendDlgItemMessage(hwndDlg, IDC_VOLUME_TRACKBAR, TBM_SETPAGESIZE, 0, VOLUME_PAGESIZE);
|
SendDlgItemMessageW(hwndDlg, IDC_VOLUME_TRACKBAR, TBM_SETPAGESIZE, 0, VOLUME_PAGESIZE);
|
||||||
|
|
||||||
NumMixers = mixerGetNumDevs();
|
NumMixers = mixerGetNumDevs();
|
||||||
if (!NumMixers)
|
if (!NumMixers)
|
||||||
|
@ -351,21 +353,21 @@ InitVolumeControls(HWND hwndDlg, PGLOBAL_DATA pGlobalData)
|
||||||
EnableWindow(GetDlgItem(hwndDlg, IDC_ADVANCED_BTN), FALSE);
|
EnableWindow(GetDlgItem(hwndDlg, IDC_ADVANCED_BTN), FALSE);
|
||||||
EnableWindow(GetDlgItem(hwndDlg, IDC_SPEAKER_VOL_BTN), FALSE);
|
EnableWindow(GetDlgItem(hwndDlg, IDC_SPEAKER_VOL_BTN), FALSE);
|
||||||
EnableWindow(GetDlgItem(hwndDlg, IDC_ADVANCED2_BTN), FALSE);
|
EnableWindow(GetDlgItem(hwndDlg, IDC_ADVANCED2_BTN), FALSE);
|
||||||
SendDlgItemMessage(hwndDlg, IDC_MUTE_ICON, STM_SETIMAGE, IMAGE_ICON, (LPARAM)pGlobalData->hIconNoHW);
|
SendDlgItemMessageW(hwndDlg, IDC_MUTE_ICON, STM_SETIMAGE, IMAGE_ICON, (LPARAM)pGlobalData->hIconNoHW);
|
||||||
SetDlgItemText(hwndDlg, IDC_DEVICE_NAME, szNoDevices);
|
SetDlgItemTextW(hwndDlg, IDC_DEVICE_NAME, szNoDevices);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (mixerOpen(&pGlobalData->hMixer, 0, PtrToUlong(hwndDlg), 0, MIXER_OBJECTF_MIXER | CALLBACK_WINDOW) != MMSYSERR_NOERROR)
|
if (mixerOpen(&pGlobalData->hMixer, 0, PtrToUlong(hwndDlg), 0, MIXER_OBJECTF_MIXER | CALLBACK_WINDOW) != MMSYSERR_NOERROR)
|
||||||
{
|
{
|
||||||
MessageBox(hwndDlg, _T("Cannot open mixer"), NULL, MB_OK);
|
MessageBoxW(hwndDlg, L"Cannot open mixer", NULL, MB_OK);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
ZeroMemory(&mxc, sizeof(MIXERCAPS));
|
ZeroMemory(&mxc, sizeof(MIXERCAPSW));
|
||||||
if (mixerGetDevCaps(PtrToUint(pGlobalData->hMixer), &mxc, sizeof(MIXERCAPS)) != MMSYSERR_NOERROR)
|
if (mixerGetDevCapsW(PtrToUint(pGlobalData->hMixer), &mxc, sizeof(MIXERCAPSW)) != MMSYSERR_NOERROR)
|
||||||
{
|
{
|
||||||
MessageBox(hwndDlg, _T("mixerGetDevCaps failed"), NULL, MB_OK);
|
MessageBoxW(hwndDlg, L"mixerGetDevCaps failed", NULL, MB_OK);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -377,20 +379,20 @@ InitVolumeControls(HWND hwndDlg, PGLOBAL_DATA pGlobalData)
|
||||||
GetMuteState(pGlobalData);
|
GetMuteState(pGlobalData);
|
||||||
if (pGlobalData->muteVal)
|
if (pGlobalData->muteVal)
|
||||||
{
|
{
|
||||||
SendDlgItemMessage(hwndDlg, IDC_MUTE_CHECKBOX, BM_SETCHECK, (WPARAM)BST_CHECKED, (LPARAM)0);
|
SendDlgItemMessageW(hwndDlg, IDC_MUTE_CHECKBOX, BM_SETCHECK, (WPARAM)BST_CHECKED, 0);
|
||||||
SendDlgItemMessage(hwndDlg, IDC_MUTE_ICON, STM_SETIMAGE, IMAGE_ICON, (LPARAM)pGlobalData->hIconMuted);
|
SendDlgItemMessageW(hwndDlg, IDC_MUTE_ICON, STM_SETIMAGE, IMAGE_ICON, (LPARAM)pGlobalData->hIconMuted);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
SendDlgItemMessage(hwndDlg, IDC_MUTE_CHECKBOX, BM_SETCHECK, (WPARAM)BST_UNCHECKED, (LPARAM)0);
|
SendDlgItemMessageW(hwndDlg, IDC_MUTE_CHECKBOX, BM_SETCHECK, (WPARAM)BST_UNCHECKED, 0);
|
||||||
SendDlgItemMessage(hwndDlg, IDC_MUTE_ICON, STM_SETIMAGE, IMAGE_ICON, (LPARAM)pGlobalData->hIconUnMuted);
|
SendDlgItemMessageW(hwndDlg, IDC_MUTE_ICON, STM_SETIMAGE, IMAGE_ICON, (LPARAM)pGlobalData->hIconUnMuted);
|
||||||
}
|
}
|
||||||
|
|
||||||
GetVolumeControl(pGlobalData);
|
GetVolumeControl(pGlobalData);
|
||||||
GetVolumeValue(pGlobalData, TRUE);
|
GetVolumeValue(pGlobalData, TRUE);
|
||||||
|
|
||||||
SendDlgItemMessage(hwndDlg, IDC_DEVICE_NAME, WM_SETTEXT, 0, (LPARAM)mxc.szPname);
|
SendDlgItemMessageW(hwndDlg, IDC_DEVICE_NAME, WM_SETTEXT, 0, (LPARAM)mxc.szPname);
|
||||||
SendDlgItemMessage(hwndDlg, IDC_VOLUME_TRACKBAR, TBM_SETPOS, (WPARAM)TRUE, (LPARAM)(pGlobalData->maxVolume - pGlobalData->volumeMinimum) / pGlobalData->volumeStep);
|
SendDlgItemMessageW(hwndDlg, IDC_VOLUME_TRACKBAR, TBM_SETPOS, (WPARAM)TRUE, (LPARAM)(pGlobalData->maxVolume - pGlobalData->volumeMinimum) / pGlobalData->volumeStep);
|
||||||
}
|
}
|
||||||
|
|
||||||
VOID
|
VOID
|
||||||
|
@ -408,7 +410,7 @@ LaunchSoundControl(HWND hwndDlg)
|
||||||
{
|
{
|
||||||
if ((INT_PTR)ShellExecuteW(NULL, L"open", L"sndvol32.exe", NULL, NULL, SW_SHOWNORMAL) > 32)
|
if ((INT_PTR)ShellExecuteW(NULL, L"open", L"sndvol32.exe", NULL, NULL, SW_SHOWNORMAL) > 32)
|
||||||
return;
|
return;
|
||||||
MessageBox(hwndDlg, _T("Cannot run sndvol32.exe"), NULL, MB_OK);
|
MessageBoxW(hwndDlg, L"Cannot run sndvol32.exe", NULL, MB_OK);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Volume property page dialog callback */
|
/* Volume property page dialog callback */
|
||||||
|
@ -421,42 +423,40 @@ VolumeDlgProc(HWND hwndDlg,
|
||||||
{
|
{
|
||||||
static IMGINFO ImgInfo;
|
static IMGINFO ImgInfo;
|
||||||
PGLOBAL_DATA pGlobalData;
|
PGLOBAL_DATA pGlobalData;
|
||||||
UNREFERENCED_PARAMETER(lParam);
|
|
||||||
UNREFERENCED_PARAMETER(wParam);
|
|
||||||
|
|
||||||
pGlobalData = (PGLOBAL_DATA)GetWindowLongPtr(hwndDlg, DWLP_USER);
|
pGlobalData = (PGLOBAL_DATA)GetWindowLongPtrW(hwndDlg, DWLP_USER);
|
||||||
|
|
||||||
switch(uMsg)
|
switch (uMsg)
|
||||||
{
|
{
|
||||||
case MM_MIXM_LINE_CHANGE:
|
case MM_MIXM_LINE_CHANGE:
|
||||||
{
|
{
|
||||||
GetMuteState(pGlobalData);
|
GetMuteState(pGlobalData);
|
||||||
if (pGlobalData->muteVal)
|
if (pGlobalData->muteVal)
|
||||||
{
|
{
|
||||||
SendDlgItemMessage(hwndDlg, IDC_MUTE_CHECKBOX, BM_SETCHECK, (WPARAM)BST_CHECKED, (LPARAM)0);
|
SendDlgItemMessageW(hwndDlg, IDC_MUTE_CHECKBOX, BM_SETCHECK, (WPARAM)BST_CHECKED, 0);
|
||||||
SendDlgItemMessage(hwndDlg, IDC_MUTE_ICON, STM_SETIMAGE, IMAGE_ICON, (LPARAM)pGlobalData->hIconMuted);
|
SendDlgItemMessageW(hwndDlg, IDC_MUTE_ICON, STM_SETIMAGE, IMAGE_ICON, (LPARAM)pGlobalData->hIconMuted);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
SendDlgItemMessage(hwndDlg, IDC_MUTE_CHECKBOX, BM_SETCHECK, (WPARAM)BST_UNCHECKED, (LPARAM)0);
|
SendDlgItemMessageW(hwndDlg, IDC_MUTE_CHECKBOX, BM_SETCHECK, (WPARAM)BST_UNCHECKED, 0);
|
||||||
SendDlgItemMessage(hwndDlg, IDC_MUTE_ICON, STM_SETIMAGE, IMAGE_ICON, (LPARAM)pGlobalData->hIconUnMuted);
|
SendDlgItemMessageW(hwndDlg, IDC_MUTE_ICON, STM_SETIMAGE, IMAGE_ICON, (LPARAM)pGlobalData->hIconUnMuted);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case MM_MIXM_CONTROL_CHANGE:
|
case MM_MIXM_CONTROL_CHANGE:
|
||||||
{
|
{
|
||||||
GetVolumeValue(pGlobalData, FALSE);
|
GetVolumeValue(pGlobalData, FALSE);
|
||||||
SendDlgItemMessage(hwndDlg, IDC_VOLUME_TRACKBAR, TBM_SETPOS, (WPARAM)TRUE, (LPARAM)(pGlobalData->maxVolume - pGlobalData->volumeMinimum) / pGlobalData->volumeStep);
|
SendDlgItemMessageW(hwndDlg, IDC_VOLUME_TRACKBAR, TBM_SETPOS, (WPARAM)TRUE, (LPARAM)(pGlobalData->maxVolume - pGlobalData->volumeMinimum) / pGlobalData->volumeStep);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case WM_INITDIALOG:
|
case WM_INITDIALOG:
|
||||||
{
|
{
|
||||||
pGlobalData = (GLOBAL_DATA*) HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(GLOBAL_DATA));
|
pGlobalData = (PGLOBAL_DATA)HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(GLOBAL_DATA));
|
||||||
SetWindowLongPtr(hwndDlg, DWLP_USER, (LONG_PTR)pGlobalData);
|
SetWindowLongPtrW(hwndDlg, DWLP_USER, (LONG_PTR)pGlobalData);
|
||||||
|
|
||||||
pGlobalData->hIconUnMuted = LoadImage(hApplet, MAKEINTRESOURCE(IDI_CPLICON), IMAGE_ICON, 32, 32, LR_DEFAULTCOLOR);
|
pGlobalData->hIconUnMuted = LoadImageW(hApplet, MAKEINTRESOURCEW(IDI_CPLICON), IMAGE_ICON, 32, 32, LR_DEFAULTCOLOR);
|
||||||
pGlobalData->hIconMuted = LoadImage(hApplet, MAKEINTRESOURCE(IDI_MUTED_ICON), IMAGE_ICON, 32, 32, LR_DEFAULTCOLOR);
|
pGlobalData->hIconMuted = LoadImageW(hApplet, MAKEINTRESOURCEW(IDI_MUTED_ICON), IMAGE_ICON, 32, 32, LR_DEFAULTCOLOR);
|
||||||
pGlobalData->hIconNoHW = LoadImage(hApplet, MAKEINTRESOURCE(IDI_NO_HW), IMAGE_ICON, 32, 32, LR_DEFAULTCOLOR);
|
pGlobalData->hIconNoHW = LoadImageW(hApplet, MAKEINTRESOURCEW(IDI_NO_HW), IMAGE_ICON, 32, 32, LR_DEFAULTCOLOR);
|
||||||
|
|
||||||
InitImageInfo(&ImgInfo);
|
InitImageInfo(&ImgInfo);
|
||||||
InitVolumeControls(hwndDlg, pGlobalData);
|
InitVolumeControls(hwndDlg, pGlobalData);
|
||||||
|
@ -466,8 +466,8 @@ VolumeDlgProc(HWND hwndDlg,
|
||||||
case WM_DRAWITEM:
|
case WM_DRAWITEM:
|
||||||
{
|
{
|
||||||
LPDRAWITEMSTRUCT lpDrawItem;
|
LPDRAWITEMSTRUCT lpDrawItem;
|
||||||
lpDrawItem = (LPDRAWITEMSTRUCT) lParam;
|
lpDrawItem = (LPDRAWITEMSTRUCT)lParam;
|
||||||
if(lpDrawItem->CtlID == IDC_SPEAKIMG)
|
if (lpDrawItem->CtlID == IDC_SPEAKIMG)
|
||||||
{
|
{
|
||||||
HDC hdcMem;
|
HDC hdcMem;
|
||||||
LONG left;
|
LONG left;
|
||||||
|
@ -504,11 +504,11 @@ VolumeDlgProc(HWND hwndDlg,
|
||||||
SwitchMuteState(pGlobalData);
|
SwitchMuteState(pGlobalData);
|
||||||
if (pGlobalData->muteVal)
|
if (pGlobalData->muteVal)
|
||||||
{
|
{
|
||||||
SendDlgItemMessage(hwndDlg, IDC_MUTE_ICON, STM_SETIMAGE, IMAGE_ICON, (LPARAM)pGlobalData->hIconMuted);
|
SendDlgItemMessageW(hwndDlg, IDC_MUTE_ICON, STM_SETIMAGE, IMAGE_ICON, (LPARAM)pGlobalData->hIconMuted);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
SendDlgItemMessage(hwndDlg, IDC_MUTE_ICON, STM_SETIMAGE, IMAGE_ICON, (LPARAM)pGlobalData->hIconUnMuted);
|
SendDlgItemMessageW(hwndDlg, IDC_MUTE_ICON, STM_SETIMAGE, IMAGE_ICON, (LPARAM)pGlobalData->hIconUnMuted);
|
||||||
}
|
}
|
||||||
|
|
||||||
PropSheet_Changed(GetParent(hwndDlg), hwndDlg);
|
PropSheet_Changed(GetParent(hwndDlg), hwndDlg);
|
||||||
|
@ -544,12 +544,12 @@ VolumeDlgProc(HWND hwndDlg,
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case TB_ENDTRACK:
|
case TB_ENDTRACK:
|
||||||
PlaySound((LPCTSTR)SND_ALIAS_SYSTEMDEFAULT, NULL, SND_ALIAS_ID | SND_ASYNC);
|
PlaySoundW((LPCWSTR)SND_ALIAS_SYSTEMDEFAULT, NULL, SND_ALIAS_ID | SND_ASYNC);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
SetVolumeValue(pGlobalData,
|
SetVolumeValue(pGlobalData,
|
||||||
(DWORD)SendDlgItemMessage(hwndDlg, IDC_VOLUME_TRACKBAR, TBM_GETPOS, 0, 0));
|
(DWORD)SendDlgItemMessageW(hwndDlg, IDC_VOLUME_TRACKBAR, TBM_GETPOS, 0, 0));
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue