jiqiong9410
jiqiong9410
采纳率0%
2017-01-30 11:54 阅读 1.9k

mfc音乐播放器mcisendstring里面的,怎么实现顺序播放歌曲?

在musicdlg.h里面
protected:
afx_msg LRESULT OnMCINotify(WPARAM wParam, LPARAM lParam);
在musicdlg.cpp里面
BEGIN_MESSAGE_MAP(CLrsfMusicDlg, CDialogEx)
ON_WM_SYSCOMMAND()
ON_WM_PAINT()
ON_WM_QUERYDRAGICON()
ON_BN_CLICKED(IDC_minbtn, &CLrsfMusicDlg::OnBnClickedminbtn)
ON_BN_CLICKED(IDC_exitbtn, &CLrsfMusicDlg::OnBnClickedexitbtn)
ON_WM_NCHITTEST()
ON_BN_CLICKED(IDC_searchbtn, &CLrsfMusicDlg::OnBnClickedsearchbtn)
ON_WM_CTLCOLOR()
ON_BN_CLICKED(IDC_playbtn, &CLrsfMusicDlg::OnBnClickedplaybtn)
ON_BN_CLICKED(IDC_stopbtn, &CLrsfMusicDlg::OnBnClickedstopbtn)
ON_BN_CLICKED(IDC_lastbtn, &CLrsfMusicDlg::OnBnClickedlastbtn)
ON_BN_CLICKED(IDC_nextbtn, &CLrsfMusicDlg::OnBnClickednextbtn)
ON_LBN_DBLCLK(IDC_musiclist, &CLrsfMusicDlg::OnDblclkMusiclist)
ON_WM_TIMER()
ON_MESSAGE(MM_MCINOTIFY, OnMCINotify) //传递消息
END_MESSAGE_MAP()

mcisendstring里面先open了,然后play
play ="play.....+notify";
hwnd=this->m_hWnd;
mciSendString(play, NULL, 0, hwnd);
响应函数

LRESULT CLrsfMusicDlg::OnMCINotify(WPARAM wParam, LPARAM lParam)
{
/*if (MCI_NOTIFY_SUCCESSFUL == wParam)
{
MessageBox(L"播放完毕",L"提示");
}*/
//MCI_NOTIFY_SUCCESSFUL == wParam
MessageBox(L"播放完毕", L"提示");
return FALSE;
}

可就是不弹出消息框啊!
不懂mfc消息传递机制,是哪里写错了

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享

1条回答 默认 最新

  • caozhy 从今以后生命中的每一秒都属于我爱的人 2017-01-30 15:51

    mcisendstring是异步的,即调用后就返回了,而不是播放后返回。你可以用windowsmediaplayer控件,支持playlist

    点赞 评论 复制链接分享

相关推荐