와 장장 이틀동안 검색과 삽질의 결과물 입니다 ㅠㅠ..

누가보면 미련하기 짝이 없겠죠?

이렇게 얻은 수확물은 평생 머리속에서 빠져 나가지 않을 것입니다.

아래 구문을 잘 봐야 합니다.
SDK 에서 설명하기로는 m_Player 의 .GetCurrentMedia() 로 연결하라고 되어 있습니다.
이렇게하면 GetDuration() 에 불량한 값이 나옵니다.

double nDur = m_Player.GetControls().GetCurrentItem().GetDuration();

이렇게 시도하니 잘 됩니다.
하지만 프로그램 종료시 디버그 창을 속출합니다.


BOOL CWMP11SampleDlg::OnInitDialog()
{
 CDialog::OnInitDialog();
 ...
 m_clsWMPSettings = m_ctrWMP.GetSettings();
 m_clsWMPControl = m_ctrWMP.GetControls();
 m_clsWMPMedia = m_ctrWMP.GetCurrentMedia();  // 이렇게 하시면 낭패 입니다.
 m_clsWMPMedia = m_ctrWMPControl.GetCurrentItem();  // 이렇게 하셔도 낭패 입니다.
 ...
SetTimer(1, 1000, NULL);
}

void CWMP11SampleDlg::OpenStateChangeOcxWmp(long NewState)
{
 // TODO: 여기에 메시지 처리기 코드를 추가합니다.
 switch(NewState)
 {
 case 13: //  MediaOpen
  m_clsWMPMedia = m_clsWMPControl.GetCurrentItem(); // 이쯤에서 받아 들이십시오.  -_- 휴~
  m_ctlTime.SetRange(0, (int)m_clsWMPMedia.GetDuration(), TRUE);
  m_ctlTime.SetPos(0);
  break;
 }
 pEdit->SetWindowTextA(strTemp);
}


void CWMP11SampleDlg::OnTimer(UINT_PTR nIDEvent)
{
 // TODO: 여기에 메시지 처리기 코드를 추가 및/또는 기본값을 호출합니다.
 switch(nIDEvent)
 {
 case 1:
  m_ctlTime.SetPos((int)m_clsWMPControl.GetCurrentPosition());
 }
 CDialog::OnTimer(nIDEvent);
}
Posted by +깡통+