MediaPlayer嵌入到IE没问题,嵌入到MFC程序的对话框里也没问题,但嵌入到CView中或CHtmlView中时出现了问题?程序一运行就报出了大红框,提示非法操作,程序被关闭?我想了很久没明白这是怎么回事。有没有大侠知道。
我New了一个新对象,然后Create,可还是不行? void CView_WMPView::OpenMediaPlayer()
{
    char szFileFilter[]=
        "Wmv File(*.wmv)|*.wmv|"
        "Wma File(*.wma)|*.wma|"
        "All File(*.*)|*.*||";
    
    CFileDialog dlg(TRUE,NULL,NULL,OFN_HIDEREADONLY,szFileFilter);
    if(dlg.DoModal()==IDOK)
    {
        double pos=m_ctrlPlayer.GetControls().GetCurrentPosition();
        m_ctrlPlayer.GetControls().stop();         if(IsDVD==TRUE)
        {
            IsDVD=FALSE;
        }        CString PathName=dlg.GetPathName();
        m_ctrlPlayer.SetUrl(PathName);        pWMPPlayer=new CWMPPlayer4;
        pWMPPlayer->Create( "movie",WS_CHILD|WS_VISIBLE,CRect(500,400,200,300),this,909090);
        pWMPPlayer->GetControls().SetCurrentPosition(pos);
        pWMPPlayer->GetSettings().SetAutoStart(TRUE);
        pWMPPlayer->ShowWindow(SW_HIDE);
        
        CString FileName;
        this->GetWindowText(FileName);
        pWMPPlayer->SetUrl(FileName);
        m_ctrlPlayer.GetControls().play();
        ::SetWindowPos(pWMPPlayer->m_hWnd,HWND_TOP,0,0,825,600,NULL);
        m_ctrlPlayer.GetControls().play();
        HWND hwnd=NULL;
        MSG msg;
        char cs[50];
        while(strcmp(cs,"Windows Media Player Window"))
        {
           hwnd=::GetTopWindow(pWMPPlayer->m_hWnd);
           ::GetWindowText(hwnd,cs,50);           if(::PeekMessage(&msg,NULL,0,0,PM_REMOVE)!=TRUE)
           {
                Sleep(1);
           }
           else
           {
               ::TranslateMessage(&msg);
               ::DispatchMessage(&msg);
           }
        }
        ::GetWindowText(hwnd,cs,50);
        AfxMessageBox(cs);                CRect Rect;
        GetClientRect(Rect);
        ::MoveWindow(pWMPPlayer->m_hWnd,0,0,900,900,TRUE);
        ::MoveWindow(hwnd,Rect.left,Rect.top,Rect.Width(),Rect.Height(),TRUE);
        pWMPPlayer->GetControls().SetCurrentPosition(pos);
        m_ctrlPlayer.GetControls().play();
        hTemp=hwnd;   
        SetTimer(133,100,NULL);
    }
}void CView_WMPView::OnTimer(UINT nIDEvent) 
{
// TODO: Add your message handler code here and/or call default CRect Rect;
GetClientRect(Rect);
::MoveWindow(pWMPPlayer->m_hWnd,0,0,900,900,TRUE);
::MoveWindow(hTemp,Rect.left,Rect.top,Rect.Width(),Rect.Height(),TRUE); CView::OnTimer(nIDEvent);
}