void CMediaPlayerDlg::OnTimer(UINT_PTR nIDEvent)
{
play *p = new play();
int index = p->m_Player2.get_playState; //播放狀態
if (index == 1)
{
if (((CButton *)GetDlgItem(IDC_RADIO1))->GetCheck()) //如果順序播放
{
CString str;
int index = m_list.GetCurSel() + 1;
if (index >= m_list.GetCount()) index = 0; //播放完最后一個,自動播放第一個
m_list.GetText(index, str);
p->m_Player2.put_URL(str);
m_list.SetCurSel(index); //自動設定游標
}
if(((CButton *)GetDlgItem(IDC_RADIO2))->GetCheck()) //隨機播放
{
srand(time(0));
m_list.SetCurSel(rand() % m_list.GetCount());
m_list.GetText(m_list.GetCurSel(),PathName);
p->m_Player2.put_URL(PathName);
}
if (((CButton *)GetDlgItem(IDC_RADIO3))->GetCheck())
CString str;
m_list.GetText(m_list.GetCurSel(), str);
p->m_Player2.put_URL(PathName);
CDialogEx::OnTimer(nIDEvent);
delete p;
}
因為點擊播放按鈕要彈出一個新的視窗播放視頻,所以新創了一個對話框,并且媒體播放器控制元件的類的物件是在那里面定義的。
這是一個實作順序播放隨機播放的函式,但編譯時總是出現斷言,求大神幫忙
下面是新對話框類
class play : public CDialogEx
{
DECLARE_DYNAMIC(play)
public:
play(CWnd* pParent = NULL); // 標準建構式
virtual ~play();
// 對話框資料
enum { IDD = IDD_PLAY };
protected:
virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV 支持
DECLARE_MESSAGE_MAP()
public:
CWMPPlayer4 m_Player2;
};
uj5u.com熱心網友回復:
CDialogEx::OnTimer(nIDEvent);delete p;
你這個地方每次進入定時器函式都會創建一個p delete個p 為什么不在程式開始的時候new好 然后在退出函式里面釋放
uj5u.com熱心網友回復:
你為什么要在點擊按鈕的時候創建視頻 為什么不在初始化里面就創建好 然后點擊的時候直接播放輸出到控制元件上呢 你的界面邏輯先屢屢轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/93950.html
標籤:基礎類
