ポータブル デバイスの操作

このセクションでは、リモート接続コントロールを使用してWindows Media Player ActiveXデバイスを操作する方法について説明します。

このセクションのコード例では、CComPtr Active Template Library (ATL) クラス を使用します

含まれるヘッダー

このセクションのコードを使用するには、次のヘッダーを含める必要があります。

#include <atlbase.h>
#include <atlcom.h>
#include <atlwin.h>
#include <commctrl.h>
#include "wmp.h"
#include "wmpids.h"

IWMPPlayer ポインター

IWMPPlayer ポインター はメンバー変数に格納されます。

CComPtr<IWMPPlayer> m_spPlayer;

デバイスは配列に格納されます

このコード例では、プロジェクト ヘッダーで宣言される次のメンバー変数にアクセスします。

IWMPSyncDevice **m_ppWMPDevices; // Points to the custom device array.

デバイス数はメンバー変数に格納されます。

int m_cDevices; // Count of devices.

デバイス ポインターの取得

特定のデバイスへのポインターは、次のようなコードを使用して配列インデックスを介して取得されます。

CComPtr<IWMPSyncDevice> spSyncDevice(m_ppWMPDevices[lIndex]);

前の例に示したインデックスは、デバイスのパートナーシップ インデックスではありません。 これは、デバイスのカスタム配列内のデバイスへのインデックスです。

クリーンアップ

この例では、次の関数を使用して、デバイス配列内のメモリを解放し、インターフェイス ポインターを解放します。

void CMainDlg::FreeDeviceArray()
{
    if(m_ppWMPDevices)
    {
        for(long i = 0; i < m_cDevices; i++)
        {
            m_ppWMPDevices[i]->Release();
        }
 
        delete[] m_ppWMPDevices;
        m_ppWMPDevices = NULL;        
    }
}

リスト ボックスにデバイスが表示される

GetSelectedDeviceIndex 関数は、次のコードを使用して、リスト ボックスでユーザーが選択したデバイスのインデックスを返します。

long CMainDlg::GetSelectedDeviceIndex()
{
    return (long)SendMessage(GetDlgItem(IDC_DEVICES), LB_GETCURSEL, 0, 0);
}

ユーザー インターフェイス状態は 1 つの関数によって管理されます

SetUIState 関数は、ユーザー インターフェイスを管理します。

SetUIState(UIState 
NewState, BOOL 
bConnected)

この関数の詳細は、このセクションの説明には関係ありませんが、この関数では、コントロールの有効化または無効化、ユーザー インターフェイスでの表示テキストの変更など、タスクが実行されます。

UIState 列挙型は次のように定義されています。

enum UIState
{
    Partnership,
    NoPartnership,
    Synchronizing
};

bConnected パラメーターは、接続されているデバイスのユーザー インターフェイスを構成するかどうかを指定します (TRUE は、デバイスが接続されていることを意味します)。 NewState パラメーターと bConnected パラメーターは、関数が処理を行うのに必要な情報を伝達します。

次のセクションでは、コード例について説明します。

プレーヤー コントロール ガイド