扫一扫
分享文章到微信
扫一扫
关注官方公众号
至顶头条
作者:sunjin007 来源:论坛 2007年11月16日
关键字:
void CPlayWndDlg::OnPaint() { if (IsIconic()) { CPaintDC dc(this); // 用于绘制的设备上下文 SendMessage(WM_ICONERASEBKGND, reinterpret_cast<WPARAM>(dc.GetSafeHdc()), 0); // 使图标在工作矩形中居中 int cxIcon = GetSystemMetrics(SM_CXICON); int cyIcon = GetSystemMetrics(SM_CYICON); CRect rect; GetClientRect(&rect); int x = (rect.Width() - cxIcon + 1) / 2; int y = (rect.Height() - cyIcon + 1) / 2; // 绘制图标 dc.DrawIcon(x, y, m_hIcon); } else { if(m_isPlaying == FALSE) { CClientDC dc(GetDlgItem(IDC_VW_FRAME)); dc.SetBkColor(RGB(0,0,0)); CRect rc; GetDlgItem(IDC_VW_FRAME)->GetClientRect(rc); //ClientToScreen(rc); dc.FillRect(rc, CBrush::FromHandle((HBRUSH)GetStockObject(BLACK_BRUSH))); GetDlgItem(IDC_VW_FRAME)->Invalidate(); } CDialog::OnPaint(); } } |
void MoveVideoWindow(void); void CleanUp(void); BOOL Stop(void); BOOL Play(void); |
// IDC_VW_FRAME控件Picture Control主要作用是控制Vedio Window的显示位置 void CPlayWndDlg::MoveVideoWindow(void) { IVideoWindow* pVideoWinow = NULL; if(m_pGraph) { m_pGraph->QueryInterface(IID_IVideoWindow, (void **)&pVideoWinow); CRect rc; GetDlgItem(IDC_VW_FRAME)->GetWindowRect(rc); ScreenToClient(rc); pVideoWinow->SetWindowPosition(rc.left, rc.top, rc.Width(), rc.Height()); pVideoWinow->Release(); pVideoWinow = NULL; } } void CPlayWndDlg::CleanUp(void) { long levCode; IVideoWindow *pVidWin = NULL; if(!m_pGraph) return; m_pGraph->QueryInterface(IID_IVideoWindow, (void **)&pVidWin); m_pEvent->WaitForCompletion(INFINITE, &levCode); pVidWin->put_Visible(OAFALSE); pVidWin->Release(); m_pMediaSeeking->Release(); m_pMediaControl->Release(); m_pEvent->Release(); m_pGraph->Release(); m_pMediaSeeking = NULL; m_pMediaControl = NULL; m_pEvent = NULL; m_pGraph = NULL; UpdateData(FALSE); CClientDC dc(GetDlgItem(IDC_VW_FRAME)); dc.SetBkColor(RGB(0,0,0)); CRect rc; GetDlgItem(IDC_VW_FRAME)->GetClientRect(rc); ClientToScreen(rc); dc.FillRect(rc, CBrush::FromHandle((HBRUSH)GetStockObject(BLACK_BRUSH))); Invalidate(); } BOOL CPlayWndDlg::Stop(void) { IVideoWindow *pVidWin = NULL; HRESULT hr; if(m_pMediaControl) { LONGLONG pos = 0; hr = m_pMediaControl->Stop(); hr = m_pMediaSeeking->SetPositions(&pos, AM_SEEKING_AbsolutePositioning ,&pos, AM_SEEKING_NoPositioning); m_pGraph->QueryInterface(IID_IVideoWindow, (void **)&pVidWin); pVidWin->put_Visible(OAFALSE); m_isPlaying = FALSE; GetDlgItem(IDC_PLAY_BUTTON)->EnableWindow(TRUE); GetDlgItem(IDC_PAUSE_BUTTON)->EnableWindow(FALSE); pVidWin->Release(); long levCode; m_pEvent->WaitForCompletion(INFINITE, &levCode); m_pMediaControl->Release(); return TRUE; } return FALSE; } BOOL CPlayWndDlg::Play(void) { // 运行 IVideoWindow *pVidWin = NULL; if(m_pGraph) { m_pGraph->QueryInterface(IID_IVideoWindow, (void **)&pVidWin); pVidWin->put_Visible(OATRUE); m_pGraph->QueryInterface(IID_IMediaControl, (void **)&m_pMediaControl); m_pMediaControl->Run(); m_isPlaying = TRUE; GetDlgItem(IDC_PLAY_BUTTON)->EnableWindow(FALSE); GetDlgItem(IDC_PAUSE_BUTTON)->EnableWindow(TRUE); return TRUE; } return FALSE; } |
如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。