void ProjectOptions::InitDevInfo() { long id = 0; HMODULE h = LoadLibrary("dsound.dll"); if (h) { tDirectSoundEnumerate pDirectSoundEnumerate = (tDirectSoundEnumerate)GetProcAddress(h, "DirectSoundEnumerateA"); if (pDirectSoundEnumerate) pDirectSoundEnumerate(EnumWaveDevice, &id); } UINT ndev = midiInGetNumDevs(); for (UINT n = 0; n < ndev; n++) { MIDIINCAPS caps; memset(&caps, 0, sizeof(caps)); midiInGetDevCaps(n, &caps, sizeof(caps)); SoundDevInfo *inf = midiList.AddItem(); inf->name = caps.szPname; inf->info = NULL; inf->id = (long)n; inf->sub = 0; inf->type = 1; } }
bool CMpcAudioRendererSettingsWnd::OnActivate() { ASSERT(IPP_FONTSIZE == 13); const int h20 = IPP_SCALE(20); const int h30 = IPP_SCALE(30); DWORD dwStyle = WS_VISIBLE | WS_CHILD | WS_TABSTOP; CPoint p(10, 10); m_txtWasapiMode.Create(ResStr(IDS_ARS_WASAPI_MODE), WS_VISIBLE|WS_CHILD, CRect(p, CSize(IPP_SCALE(320), m_fontheight)), this, (UINT)IDC_STATIC); p.y += h20; m_cbWasapiMode.Create(WS_VISIBLE|WS_CHILD|CBS_DROPDOWNLIST|WS_VSCROLL, CRect(p, CSize(IPP_SCALE(320), 200)), this, IDC_PP_WASAPI_MODE); m_cbWasapiMode.AddString(L"Exclusive Mode"); m_cbWasapiMode.AddString(L"Shared Mode"); p.y += h30; m_cbUseBitExactOutput.Create(ResStr(IDS_ARS_BITEXACT_OUTPUT), WS_VISIBLE|WS_CHILD|BS_AUTOCHECKBOX|BS_LEFTTEXT, CRect(p, CSize(IPP_SCALE(320), m_fontheight)), this, IDC_PP_USE_BITEXACT_OUTPUT); p.y += h20; m_cbUseSystemLayoutChannels.Create(ResStr(IDS_ARS_SYSTEM_LAYOUT_CHANNELS), WS_VISIBLE|WS_CHILD|BS_AUTOCHECKBOX|BS_LEFTTEXT, CRect(p, CSize(IPP_SCALE(320), m_fontheight)), this, IDC_PP_USE_SYSTEM_LAYOUT_CHANNELS); p.y += h30; m_txtSoundDevice.Create(ResStr(IDS_ARS_SOUND_DEVICE), WS_VISIBLE|WS_CHILD, CRect(p, CSize(IPP_SCALE(320), m_fontheight)), this, (UINT)IDC_STATIC); p.y += h20; m_cbSoundDevice.Create(WS_VISIBLE|WS_CHILD|CBS_DROPDOWNLIST|WS_VSCROLL, CRect(p, CSize(IPP_SCALE(320), 200)), this, IDC_PP_SOUND_DEVICE); HMODULE hModule = LoadLibrary(L"dsound.dll"); if (hModule) { HRESULT (__stdcall * pDirectSoundEnumerate)(__in LPDSENUMCALLBACKW pDSEnumCallback, __in_opt LPVOID pContext); (FARPROC &)pDirectSoundEnumerate = GetProcAddress(hModule, "DirectSoundEnumerateW"); if (pDirectSoundEnumerate) { pDirectSoundEnumerate((LPDSENUMCALLBACK)DSEnumProc, (VOID*)&m_cbSoundDevice); } FreeLibrary(hModule); } if (m_pMAR) { if (m_cbSoundDevice.GetCount() > 0) { int idx = m_cbSoundDevice.FindString(0, m_pMAR->GetSoundDevice()); if (idx < 0) { m_cbSoundDevice.SetCurSel(0); } else { m_cbSoundDevice.SetCurSel(m_cbSoundDevice.FindString(0, m_pMAR->GetSoundDevice())); } } m_cbWasapiMode.SetCurSel(m_pMAR->GetWasapiMode()); m_cbUseBitExactOutput.SetCheck(m_pMAR->GetBitExactOutput()); m_cbUseSystemLayoutChannels.SetCheck(m_pMAR->GetSystemLayoutChannels()); } for (CWnd* pWnd = GetWindow(GW_CHILD); pWnd; pWnd = pWnd->GetNextWindow()) { pWnd->SetFont(&m_font, FALSE); } CorrectComboListWidth(m_cbSoundDevice); SetClassLongPtr(m_hWnd, GCLP_HCURSOR, (long) AfxGetApp()->LoadStandardCursor(IDC_ARROW)); SetClassLongPtr(GetDlgItem(IDC_PP_SOUND_DEVICE)->m_hWnd, GCLP_HCURSOR, (long) AfxGetApp()->LoadStandardCursor(IDC_HAND)); OnClickedWasapiMode(); return true; }