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
}