我正在使用lame库和MCI制作一个简单的音乐播放程序。将MP3文件解码成wav文件后,使用MCIWndCreate和MCIWndPlay播放音乐。所有功能都工作正常,但设置音量有问题。我找到并使用了一个名为MCIWndSetVolume(hWnd,iVol)的方法来设置音量。但我得到的错误如下。如果你知道问题出在哪部分,请给我一点建议。非常感谢你阅读并回答我的问题。错误消息->驱动程序无法识别指定的命令。
void CMP3PlayerDlg::Wav(CString strFileName)
{
m_hWav = NULL;
m_nowWav = strFileName;
CString strWav;
strWav.Format(WAV_FILE_PATH + strFileName);
if(m_hWav == NULL)
{
m_hWav = MCIWndCreate(this->GetSafeHwnd(), AfxGetInstanceHandle(), WS_CHILD | WS_VISIBLE | MCIWNDF_NOMENU , strWav);
}
else
{
MCIWndHome(m_hWav);
}
MCIWndPlay(m_hWav);
m_bPause = FALSE;
m_btnPlay.EnableWindow(FALSE);
}
void CMP3PlayerDlg::OnHScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar)
{
// TODO: 여기에 메시지 처리기 코드를 추가 및/또는 기본값을 호출합니다.
if(IDC_SLIDER_VOLUM == pScrollBar->GetDlgCtrlID())
{
int nPos = m_SliderVol.GetPos();
CString strPos;
strPos.Format("%d", nPos);
m_EditVol.SetWindowText(strPos);
}
CDialogEx::OnHScroll(nSBCode, nPos, pScrollBar);
}
void CMP3PlayerDlg::OnEnChangeEditVolum()
{
// TODO: 여기에 컨트롤 알림 처리기 코드를 추가합니다.
CString strPos;
m_EditVol.GetWindowText(strPos);
int nPos = _ttoi(strPos);
m_SliderVol.SetPos(nPos);
MCIWndSetVolume(m_hWav, nPos);
}这是一种使用播放和滑块的音量控制方法。
发布于 2021-03-23 15:49:58
void CMP3PlayerDlg::OnEnChangeEditVolum()
{
// TODO: 여기에 컨트롤 알림 처리기 코드를 추가합니다.
CString strPos;
CString strFile;
m_EditVol.GetWindowText(strPos);
int nPos = _ttoi(strPos);
if(nPos > 100)
{
strPos = "100";
nPos = 100;
m_EditVol.SetWindowText("100");
}
m_SliderVol.SetPos(nPos);
waveOutSetVolume((HWAVEOUT)m_hWav, (DWORD)(nPos));
}现在可以使用waveOutSetVolume方法控制音量。感谢您阅读并回答我的问题。
https://stackoverflow.com/questions/66742243
复制相似问题