IltmmDVDControl::GetButtonAtPosition Example for C++

#define MAKE_MEDIA_PATH(pFileName) (TEXT("C:\\LEADTOOLS 17.5\\Media\\")TEXT(pFileName))


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::OnDvdcontrolPlayAtTime()
{
   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::OnDvdcontrolPlayBackwards()
{
   HRESULT hr;
   hr = m_pDVD->PlayBackwards(5);
}

void CMainFrame::OnDvdcontrolPlayForwards()
{
   HRESULT hr;
   hr = m_pDVD->PlayForwards(5);
}

void CMainFrame::OnDvdcontrolPlayAtTimeInTitle()
{
   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(MAKE_MEDIA_PATH("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(TEXT("No DVD source file available"), TEXT("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) ? TEXT("Enabled") : TEXT("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(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) ? TEXT("Enabled") : TEXT("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) ? TEXT("On") : TEXT("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(bstrVal);
   hr = pDVD->get_DVDUniqueID(&bstrVal);
   GetDlgItem(IDC_EDIT_DVDID)->SetWindowText(bstrVal);
   pDVD->Release();
   return TRUE;  // return TRUE unless you set the focus to a control
   // EXCEPTION: OCX Property Pages should return FALSE
}