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);
}
我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);
}
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货