IltmmDVDControl::GetButtonAtPosition Example for C++
void CMainFrame::OnDvdcontrolPause()
{
HRESULT hr;
hr = m_pDVD->Pause (VARIANT_TRUE);
}
void CMainFrame::OnDvdcontrolPlaychapter()
{
HRESULT hr;
hr = m_pDVD->PlayChapter (1);
}
void CMainFrame::OnDvdcontrolPlaynextchapter()
{
HRESULT hr;
hr = m_pDVD->PlayNextChapter ();
}
void CMainFrame::OnDvdcontrolPlayprevchapter()
{
HRESULT hr;
hr = m_pDVD->PlayPrevChapter ();
}
void CMainFrame::OnDvdcontrolReplaychapter()
{
HRESULT hr;
hr = m_pDVD->ReplayChapter ();
}
void CMainFrame::OnDvdcontrolResume()
{
HRESULT hr;
hr = m_pDVD->Resume ();
}
void CMainFrame::OnDvdcontrolShowmenu()
{
HRESULT hr;
hr = m_pDVD->ShowMenu (ltmmDVD_MENU_Root);
}
void CMainFrame::OnDvdcontrolStop()
{
HRESULT hr;
hr = m_pDVD->Stop ();
}
void CMainFrame::OnDvdcontrolPlayatPlayattime()
{
ltmmDVD_HMSF_TIMECODE Time;
Time.bHours = 0;
Time.bMinutes = 10;
Time.bSeconds = 0;
Time.bFrames = 0;
HRESULT hr;
long *plTime = (long*)&Time;
hr = m_pDVD->PlayAtTime (*plTime);
}
void CMainFrame::OnDvdcontrolPlayatPlaybackword()
{
HRESULT hr;
hr = m_pDVD->PlayBackwards (5);
}
void CMainFrame::OnDvdcontrolPlayatPlayforwards()
{
HRESULT hr;
hr = m_pDVD->PlayForwards (5);
}
void CMainFrame::OnDvdcontrolPlayatPlayatintitle()
{
ltmmDVD_HMSF_TIMECODE Time;
Time.bHours = 0;
Time.bMinutes = 30;
Time.bSeconds = 0;
Time.bFrames = 0;
HRESULT hr;
long *plTime = (long*)&Time;
hr = m_pDVD->PlayAtTimeInTitle (1, *plTime);
}
void CMainFrame::OnDvdcontrolChaptersPlaychapterintitle()
{
HRESULT hr;
hr = m_pDVD->PlayChapterInTitle (1, 3);
}
void CMainFrame::OnDvdcontrolChaptersPlaychapterautostop()
{
HRESULT hr;
hr = m_pDVD->PlayChaptersAutoStop (1, 2, 5);
}
void CMainFrame::OnDvdcontrolChaptersPlaytitle()
{
HRESULT hr;
hr = m_pDVD->PlayTitle (2);
}
void CMainFrame::OnDvdcontrolChaptersPlayperiod()
{
HRESULT hr;
ltmmDVD_HMSF_TIMECODE Time1, Time2;
Time1.bHours = 0;
Time1.bMinutes = 30;
Time1.bSeconds = 0;
Time1.bFrames = 0;
Time2.bHours = 0;
Time2.bMinutes = 30;
Time2.bSeconds = 20;
Time2.bFrames = 0;
long *plTime1 = (long*)&Time1;
long *plTime2 = (long*)&Time2;
hr = m_pDVD->PlayPeriodInTitleAutoStop (1, *plTime1, *plTime2);
}
void CMainFrame::OnDvdcontrolReturnfromsubmenu()
{
HRESULT hr;
hr = m_pDVD->ReturnFromSubmenu ();
}
void CMainFrame::OnDvdcontrolStilloff()
{
HRESULT hr;
hr = m_pDVD->StillOff ();
}
void CMainFrame::OnDvdcontrolButtonsActivatebutton()
{
HRESULT hr;
hr = m_pDVD->ActivateButton ();
}
void CMainFrame::OnDvdcontrolButtonsActivateatposition()
{
HRESULT hr;
hr = m_pDVD->ActivateAtPosition (10, 10);
}
void CMainFrame::OnDvdcontrolButtonsSelectatposition()
{
HRESULT hr;
hr = m_pDVD->SelectAtPosition (10, 10);
}
void CMainFrame::OnDvdcontrolButtonsSelectandactivatebutton()
{
HRESULT hr;
hr = m_pDVD->SelectAndActivateButton (1);
}
void CMainFrame::OnDvdcontrolButtonsSelectbutton()
{
HRESULT hr;
long lButton;
hr = m_pDVD->GetButtonAtPosition(10, 10, &lButton);
if (FAILED(hr))
return;
hr = m_pDVD->SelectButton (lButton);
}
void CMainFrame::OnDvdcontrolButtonsSelectrelativebutton()
{
HRESULT hr;
hr = m_pDVD->SelectRelativeButton (ltmmDVD_Relative_Right);
}
void CMainFrame::OnDvdcontrolSetdvddirectory()
{
HRESULT hr;
hr = m_pDVD->put_DVDDirectory (L"e:\\video_ts");
}
void CMainFrame::OnDvdcontrolAcceptparentallevelchange()
{
HRESULT hr;
hr = m_pDVD->AcceptParentalLevelChange (VARIANT_TRUE);
}
void CMainFrame::OnDvdcontrolNotifyparentallevelchange()
{
HRESULT hr;
hr = m_pDVD->NotifyParentalLevelChange (VARIANT_TRUE);
}
void CMainFrame::OnDvdcontrolChangedvdregion()
{
HRESULT hr;
hr = m_pDVD->ChangeDVDRegion ((long)GetSafeHwnd());
}
void CMainFrame::OnDvdinfo()
{
CDVDInfo dlg;
dlg.m_pPlay = m_player;
dlg.DoModal();
}
// DVD info dialog
BOOL CDVDInfo::OnInitDialog()
{
CDialog::OnInitDialog();
if (!m_pPlay)
return TRUE;
HRESULT hr;
VARIANT_BOOL vEnabled;
BSTR bstrVal;
IltmmDVDControl* pDVD = NULL;
hr = m_pPlay->get_DVDControl(&pDVD);
if (FAILED(hr))
{
MessageBox("No DVD source file available", "Error");
return TRUE;
}
long lVal, lButton;
hr = pDVD->get_CurrentButton (&lButton);
if (SUCCEEDED(hr))
{
hr = pDVD->GetButtonWidth (lButton, &lVal);
if (SUCCEEDED(hr))
SetDlgItemInt(IDC_EDIT_BUTTONWIDTH, lVal);
hr = pDVD->GetButtonHeight (lButton, &lVal);
if (SUCCEEDED(hr))
SetDlgItemInt(IDC_EDIT_BUTTONHEIGHT, lVal);
hr = pDVD->GetButtonLeft (lButton, &lVal);
if (SUCCEEDED(hr))
SetDlgItemInt(IDC_EDIT_BUTTONLEFT, lVal);
hr = pDVD->GetButtonTop (lButton, &lVal);
if (SUCCEEDED(hr))
SetDlgItemInt(IDC_EDIT_BUTTONTOP, lVal);
}
hr = pDVD->get_DefaultMenuLanguage (&lVal);
if (SUCCEEDED(hr))
SetDlgItemInt(IDC_EDIT_DEFMENULANGAUGE, lVal);
hr = pDVD->put_DefaultMenuLanguage (1033);
hr = pDVD->GetNumberOfChapters (0, &lVal);
if (SUCCEEDED(hr))
SetDlgItemInt(IDC_EDIT_NUMBEROFCHAPTERS, lVal);
hr = pDVD->get_TotalTitleTime (&lVal);
if (SUCCEEDED(hr))
SetDlgItemInt(IDC_EDIT_TOTALTITLETIME, lVal);
hr = pDVD->get_TitleTimecodeFlags (&lVal);
if (SUCCEEDED(hr))
SetDlgItemInt(IDC_EDIT_TITLETIMECODEFLAGS, lVal);
hr = pDVD->get_CurrentAngle (&lVal);
if (SUCCEEDED(hr))
SetDlgItemInt(IDC_EDIT_CURANGLE, lVal);
hr = pDVD->get_AnglesAvailable (&lVal);
if (SUCCEEDED(hr))
SetDlgItemInt(IDC_EDIT_ANGLESAVAILABLES, lVal);
if (lVal > 1)
hr = pDVD->put_CurrentAngle (2);
hr = pDVD->get_CurrentUOPS (&lVal);
if (SUCCEEDED(hr))
SetDlgItemInt(IDC_EDIT_CURUOPS, lVal);
hr = pDVD->GetAudioLanguage (0, &lVal);
if (SUCCEEDED(hr))
SetDlgItemInt(IDC_EDIT_AUDOLANGUAGE, lVal);
hr = pDVD->get_CurrentAudioStream (&lVal);
if (SUCCEEDED(hr))
SetDlgItemInt(IDC_EDIT_CURAUDIOSTREAM, lVal);
hr = pDVD->get_AudioStreamsAvailable (&lVal);
if (SUCCEEDED(hr))
SetDlgItemInt(IDC_EDIT_AUIOSTREAMSAVAILABLE, lVal);
if (lVal > 1)
hr = pDVD->put_CurrentAudioStream (2);
hr = pDVD->get_CurrentTime (&lVal);
if (SUCCEEDED(hr))
SetDlgItemInt(IDC_EDIT_CURRENTTIME, lVal);
hr = pDVD->get_CurrentVolume (&lVal);
if (SUCCEEDED(hr))
SetDlgItemInt(IDC_EDIT_CURRENTVOLUME, lVal);
hr = pDVD->get_VolumesAvailable (&lVal);
if (SUCCEEDED(hr))
SetDlgItemInt(IDC_EDIT_VOLUMENSAVAILABLE, lVal);
hr = pDVD->get_TitlesAvailable (&lVal);
if (SUCCEEDED(hr))
SetDlgItemInt(IDC_EDIT_TITLESAVAILABLE, lVal);
hr = pDVD->IsAudioStreamEnabled (0, &vEnabled);
if (SUCCEEDED(hr))
GetDlgItem(IDC_EDIT_ISAUDIOSTREAMENABLED)->SetWindowText((vEnabled == VARIANT_TRUE) ? "Enabled" : "Disabled");
hr = pDVD->get_DefaultAudioLanguage (&lVal);
if (SUCCEEDED(hr))
SetDlgItemInt(IDC_EDIT_DEFAUDIOLANG, lVal);
hr = pDVD->SelectDefaultAudioLanguage (1033, ltmmDVD_AUD_EXT_Captions);
USES_CONVERSION;
hr = pDVD->get_DVDDirectory (&bstrVal);
if (SUCCEEDED(hr))
GetDlgItem(IDC_EDIT_DVDDIRECTORY)->SetWindowText(W2A(bstrVal));
hr = pDVD->get_CurrentSubpictureStream (&lVal);
if (SUCCEEDED(hr))
SetDlgItemInt(IDC_EDIT_CURSUBPICSTREAM, lVal);
hr = pDVD->get_SubpictureStreamsAvailable (&lVal);
if (SUCCEEDED(hr))
SetDlgItemInt(IDC_EDIT_SUBPICSTREAMAVAILABLE, lVal);
if (lVal > 1)
hr = pDVD->put_CurrentSubpictureStream (1);
hr = pDVD->get_DefaultSubpictureLanguage (&lVal);
if (SUCCEEDED(hr))
SetDlgItemInt(IDC_EDIT_DEFSUBPICLANG, lVal);
hr = pDVD->SelectDefaultSubpictureLanguage (1033, ltmmDVD_SP_EXT_Caption_Normal);
hr = pDVD->get_CurrentTitle (&lVal);
if (SUCCEEDED(hr))
SetDlgItemInt(IDC_EDIT_CURRENTTITILE, lVal);
hr = pDVD->get_DefaultSubpictureLanguageExt (&lVal);
if (SUCCEEDED(hr))
SetDlgItemInt(IDC_EDIT_DEFSUBPICLANGEXT, lVal);
hr = pDVD->get_DefaultAudioLanguageExt(&lVal);
if (SUCCEEDED(hr))
SetDlgItemInt(IDC_EDIT_DEFAUDIOLANGEXT, lVal);
hr = pDVD->GetSubpictureLanguage (0, &lVal);
if (SUCCEEDED(hr))
SetDlgItemInt(IDC_EDIT_SUBPICLANG, lVal);
hr = pDVD->IsSubpictureStreamEnabled (0, &vEnabled);
if (SUCCEEDED(hr))
GetDlgItem(IDC_EDIT_ISSUBPICSTREAMENABLE)->SetWindowText((vEnabled == VARIANT_TRUE) ? "Enabled" : "Disabled");
hr = pDVD->GetDVDTextLanguageLCID (0, &lVal);
if (SUCCEEDED(hr))
SetDlgItemInt(IDC_EDITD_DVDTEXTLANGLCID, lVal);
hr = pDVD->get_DVDTextNumberOfLanguages (&lVal);
if (SUCCEEDED(hr))
SetDlgItemInt(IDC_EDIT_DVDTEXTNUMOFLANG, lVal);
hr = pDVD->GetGPRM (0, &lVal);
if (SUCCEEDED(hr))
SetDlgItemInt(IDC_EDIT_GPRM, lVal);
hr = pDVD->SetGPRM (0, 1);
hr = pDVD->GetDVDTextNumberOfStrings (0, &lVal);
if (SUCCEEDED(hr))
SetDlgItemInt(IDC_EDIT_DVDTEXTNUMOFSTRINGS, lVal);
hr = pDVD->get_ButtonsAvailable (&lVal);
if (SUCCEEDED(hr))
SetDlgItemInt(IDC_EDIT_BUTTONSAVAILABLE, lVal);
hr = pDVD->get_PlayerParentalLevel (&lVal);
if (SUCCEEDED(hr))
SetDlgItemInt(IDC_EDIT_PLAYERLEVEL, lVal);
BYTE *pCountry;
hr = pDVD->get_PlayerParentalCountry (&lVal);
if (SUCCEEDED(hr))
SetDlgItemInt(IDC_EDIT_PLAYERCOUNTRY, lVal);
pCountry = (BYTE*)&lVal;
if ((pCountry[0] != 'U') ||
(pCountry[1] != 'S'))
{
BYTE aRegion[2] = {0};
aRegion[0] = 'U';
aRegion[1] = 'S';
lVal = *((WORD *) aRegion);
hr = pDVD->SelectParentalCountry (lVal, NULL, NULL);
}
hr = pDVD->GetTitleParentalLevels (-1, &lVal);
if (SUCCEEDED(hr))
SetDlgItemInt(IDC_EDIT_TITLELEVELS, lVal);
hr = pDVD->SelectParentalLevel (ltmmDVD_PARENTAL_LEVEL_1, NULL, NULL);
hr = pDVD->get_CurrentDomain (&lVal);
if (SUCCEEDED(hr))
SetDlgItemInt(IDC_EDIT_CURDOMAIN, lVal);
hr = pDVD->get_CurrentDiscSide (&lVal);
if (SUCCEEDED(hr))
SetDlgItemInt(IDC_EDIT_CURDISCSIDE, lVal);
hr = pDVD->get_CurrentChapter (&lVal);
if (SUCCEEDED(hr))
SetDlgItemInt(IDC_EDIT_CURCHAPTER, lVal);
hr = pDVD->GetDVDTextStringType (0, 0, &lVal);
if (SUCCEEDED(hr))
SetDlgItemInt(IDC_EDIT_DVDTEXTSTRINGTYPE, lVal);
hr = pDVD->get_SubpictureOn (&vEnabled);
if (SUCCEEDED(hr))
GetDlgItem(IDC_EDIT_SUBPICON)->SetWindowText((vEnabled == VARIANT_TRUE) ? "On" : "Off");
if (vEnabled != VARIANT_TRUE)
hr = pDVD->put_SubpictureOn (VARIANT_TRUE);
hr = pDVD->GetSPRM (0, &lVal);
if (SUCCEEDED(hr))
SetDlgItemInt(IDC_EDIT_SPRM, lVal);
hr = pDVD->GetDVDTextString (0, 0, &bstrVal);
if (SUCCEEDED(hr))
GetDlgItem(IDC_EDIT_DVDTEXTSTRING)->SetWindowText(W2A(bstrVal));
hr = pDVD->get_DVDUniqueID (&bstrVal);
GetDlgItem(IDC_EDIT_DVDID)->SetWindowText(W2A(bstrVal));
pDVD->Release();
return TRUE; // return TRUE unless you set the focus to a control
// EXCEPTION: OCX Property Pages should return FALSE
}