[답변]자답입니다 // 혹시 정확한 사용방법 아시는 분 계시면 꼭 알려주십시오 2005-01-18 오후 11:58:52
동구니 (nethe)  동구니님께 메시지 보내기동구니님을 내 주소록에 추가합니다.동구니님의 개인게시판 가기 번호: 494156   / 평점:  (-)  

 아무리 제가 해놓고 봐도 SDK와는 다릅니다. SDK의 이코드 저코드 끌어쓰다보니 어떻게 해결은 했습니다.

 

먼저 보통 방법처럼 windows media player ActiveX 콤포넌트를 삽입합니다. 그다음 변수지정하면 임의의 소스화일과 헤더화일이 생기는데 (CWMPPlayer4 기반입니다) 이걸 무시하고 그냥 콥포넌트를 삽입한 헤더에 CWMPPlayer [변수명] 형태로 바꾸어 줍니다.

 

다음 구현부분에서 현재의 CWMPPlaeyr 인터페이스 대신 자신이 사용하고 싶은 인터페이스를 불러옵니다. 여기서 인터페이스란 문자그대로 인터페이스 입니다. 미디어 플레이어의 다양한 기능을 각 부문별로 포장해놓은 패키지라고 생각하면 됩니다.

 

방법은 다음과 같습니다.

 

1) 지금 사용중인 미디어플레이어 개체에서 사용하고자 하는 인터페이스 포인터를 얻는다

2) queryinterface 명령으로 임의의 인터페이스에 1)에서 구한 포인터값을 넘긴다.

3) 임의의 인터페이스를 사용한다

4) 사용을 완료한 인터페이스 포인터를 반납한다.

 

 

// 헤더

 

#include "CWMPPlayer.h" // 프로젝트>클레스 추가>ActiveX의...> windows media player 에서 CWMPPlayer을 찾아추가합니다.

#include "wmp.h" // 미디어플레이어10의 SDK 에 삽입되어있습니다.

 

class Cmp10View : public CFormView

{

    ...

 

    // CNonameClass m_Player

    CWMPPlayer m_Player;

 

    ...

};

 

 

 

// 소스

void Cmp10View::OnBnClickedPlay()

{

    IDispatch *pSettings = NULL;

    IWMPControls *pSettings2 = NULL; // 임의의 인터페이스, 여기서는 컨트롤 인터페이스

    HRESULT hr = S_OK;

 

    // Get a pointer to the IDispatch interface from CWMPSettings.

    pSettings = m_Player.get_controls(); // get_controls는 컨트롤 인터페이스의 포인터를 반환합니다.

 

    if( pSettings != NULL )

    {

        // Get a pointer to the IWMPSettings2 interface.

        hr = pSettings->QueryInterface(&pSettings2); // 임의의 컨트롤 인터페이스에 현재 사용중인 컨트롤 인터페이스의 포인터를 넘깁니다

        if( SUCCEEDED( hr ) )

        {

            hr = pSettings2->play();  // 컨트롤 인터페이스를 사용합니다.

        }

 

        // Don't forget to call release through the pointers.

        if( pSettings )

        {

            pSettings->Release();

        }

 

        if( pSettings2 )

        {

            pSettings2->Release();

        }

    }

}

 

 

일단 문제 없이 작동합니다만, 이것 말고 정석이 있을것으로 사료됩니다.

 


Posted by +깡통+