INT_PTR CALLBACK AudioDlgProc (HWND hDlg, UINT uMsg, WPARAM wParam, LPARAM lParam) { switch (uMsg) { case WM_COMMAND: switch (LOWORD(wParam)) { case IDC_AUDIO_TEST: test_sound(); break; case IDC_AUDIOOUT_DEVICE: if(HIWORD(wParam) == CBN_SELCHANGE){ set_reg_device(hDlg, IDC_AUDIOOUT_DEVICE, reg_out_nameW); SendMessageW(GetParent(hDlg), PSM_CHANGED, 0, 0); } break; case IDC_VOICEOUT_DEVICE: if(HIWORD(wParam) == CBN_SELCHANGE){ set_reg_device(hDlg, IDC_VOICEOUT_DEVICE, reg_vout_nameW); SendMessageW(GetParent(hDlg), PSM_CHANGED, 0, 0); } break; case IDC_AUDIOIN_DEVICE: if(HIWORD(wParam) == CBN_SELCHANGE){ set_reg_device(hDlg, IDC_AUDIOIN_DEVICE, reg_in_nameW); SendMessageW(GetParent(hDlg), PSM_CHANGED, 0, 0); } break; case IDC_VOICEIN_DEVICE: if(HIWORD(wParam) == CBN_SELCHANGE){ set_reg_device(hDlg, IDC_VOICEIN_DEVICE, reg_vin_nameW); SendMessageW(GetParent(hDlg), PSM_CHANGED, 0, 0); } break; } break; case WM_SHOWWINDOW: set_window_title(hDlg); break; case WM_NOTIFY: switch(((LPNMHDR)lParam)->code) { case PSN_KILLACTIVE: SetWindowLongPtr(hDlg, DWLP_MSGRESULT, FALSE); break; case PSN_APPLY: apply(); SetWindowLongPtr(hDlg, DWLP_MSGRESULT, PSNRET_NOERROR); break; case PSN_SETACTIVE: break; } break; case WM_INITDIALOG: initAudioDlg(hDlg); break; } return FALSE; }
INT_PTR CALLBACK AudioDlgProc (HWND hDlg, UINT uMsg, WPARAM wParam, LPARAM lParam) { switch (uMsg) { case WM_COMMAND: switch (LOWORD(wParam)) { case IDC_AUDIO_TEST: test_sound(); break; case IDC_AUDIOOUT_DEVICE: if(HIWORD(wParam) == CBN_SELCHANGE){ set_reg_device(hDlg, IDC_AUDIOOUT_DEVICE, reg_out_nameW); SendMessageW(GetParent(hDlg), PSM_CHANGED, 0, 0); } break; case IDC_VOICEOUT_DEVICE: if(HIWORD(wParam) == CBN_SELCHANGE){ set_reg_device(hDlg, IDC_VOICEOUT_DEVICE, reg_vout_nameW); SendMessageW(GetParent(hDlg), PSM_CHANGED, 0, 0); } break; case IDC_AUDIOIN_DEVICE: if(HIWORD(wParam) == CBN_SELCHANGE){ set_reg_device(hDlg, IDC_AUDIOIN_DEVICE, reg_in_nameW); SendMessageW(GetParent(hDlg), PSM_CHANGED, 0, 0); } break; case IDC_VOICEIN_DEVICE: if(HIWORD(wParam) == CBN_SELCHANGE){ set_reg_device(hDlg, IDC_VOICEIN_DEVICE, reg_vin_nameW); SendMessageW(GetParent(hDlg), PSM_CHANGED, 0, 0); } break; case IDC_SPEAKERCONFIG_DEVICE: if(HIWORD(wParam) == CBN_SELCHANGE){ UINT idx; idx = SendDlgItemMessageW(hDlg, IDC_SPEAKERCONFIG_DEVICE, CB_GETCURSEL, 0, 0); if(idx < num_render_devs){ SendDlgItemMessageW(hDlg, IDC_SPEAKERCONFIG_SPEAKERS, CB_SETCURSEL, render_devs[idx].speaker_config, 0); } } break; case IDC_SPEAKERCONFIG_SPEAKERS: if(HIWORD(wParam) == CBN_SELCHANGE){ UINT dev, idx; idx = SendDlgItemMessageW(hDlg, IDC_SPEAKERCONFIG_SPEAKERS, CB_GETCURSEL, 0, 0); dev = SendDlgItemMessageW(hDlg, IDC_SPEAKERCONFIG_DEVICE, CB_GETCURSEL, 0, 0); if(dev < num_render_devs){ render_devs[dev].speaker_config = idx; SendMessageW(GetParent(hDlg), PSM_CHANGED, 0, 0); } } break; } break; case WM_SHOWWINDOW: set_window_title(hDlg); break; case WM_NOTIFY: switch(((LPNMHDR)lParam)->code) { case PSN_KILLACTIVE: SetWindowLongPtrW(hDlg, DWLP_MSGRESULT, FALSE); break; case PSN_APPLY: apply_speaker_configs(); apply(); SetWindowLongPtrW(hDlg, DWLP_MSGRESULT, PSNRET_NOERROR); break; case PSN_SETACTIVE: break; } break; case WM_INITDIALOG: initAudioDlg(hDlg); break; } return FALSE; }