jiqiong9410 2017-01-30 11:54 采纳率: 0%
浏览 2015

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条回答 默认 最新

  • threenewbee 2017-01-30 15:51
    关注

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

    评论

报告相同问题?

悬赏问题

  • ¥50 永磁型步进电机PID算法
  • ¥15 sqlite 附加(attach database)加密数据库时,返回26是什么原因呢?
  • ¥88 找成都本地经验丰富懂小程序开发的技术大咖
  • ¥15 如何处理复杂数据表格的除法运算
  • ¥15 如何用stc8h1k08的片子做485数据透传的功能?(关键词-串口)
  • ¥15 有兄弟姐妹会用word插图功能制作类似citespace的图片吗?
  • ¥200 uniapp长期运行卡死问题解决
  • ¥15 latex怎么处理论文引理引用参考文献
  • ¥15 请教:如何用postman调用本地虚拟机区块链接上的合约?
  • ¥15 为什么使用javacv转封装rtsp为rtmp时出现如下问题:[h264 @ 000000004faf7500]no frame?