手順 4. プロパティ ページを作成する
[このページに関連付けられている機能 DirectShow は、従来の機能です。 MediaPlayer、IMFMediaEngine、および Media Foundation のオーディオ/ビデオ キャプチャに置き換わりました。 これらの機能は、Windows 10とWindows 11用に最適化されています。 新しいコードでは、可能であれば、DirectShow ではなく Media Foundation で MediaPlayer、IMFMediaEngine、Audio/Video Capture を使用することを強くお勧めします。 Microsoft は、従来の API を使用する既存のコードを、可能であれば新しい API を使用するように書き直すよう提案しています。]
この時点で、フィルターはプロパティ ページに必要なすべてのものをサポートします。 次の手順では、プロパティ ページ自体を実装します。 まず 、CBasePropertyPage から新しいクラスを派生させます。 次の例は、宣言の一部を示しています。この例の後半で使用されるプライベート メンバー変数も含まれています。
class CGrayProp : public CBasePropertyPage
{
private:
ISaturation *m_pGray; // Pointer to the filter's custom interface.
long m_lVal // Store the old value, so we can revert.
long m_lNewVal; // New value.
public:
/* ... */
};
次に、ダイアログ タイトルの文字列リソースと共に、リソース エディターでダイアログ リソースを作成します。 プロパティ ページのタブに文字列が表示されます。 2 つのリソース ID は、 CBasePropertyPage コンストラクターの引数です。
CGrayProp::CGrayProp(IUnknown *pUnk) :
CBasePropertyPage(NAME("GrayProp"), pUnk, IDD_PROPPAGE, IDS_PROPPAGE_TITLE),
m_pGray(0)
{ }
次の図は、プロパティ ページの例のダイアログ リソースを示しています。
これで、プロパティ ページを実装する準備ができました。 オーバーライドする CBasePropertyPage のメソッドを次に示します。
- OnConnect は、クライアントがプロパティ ページを作成するときに呼び出されます。 IUnknown ポインターをフィルターに設定します。
- OnActivate は、ダイアログの作成時に呼び出されます。
- OnReceiveMessage は、ダイアログがウィンドウ メッセージを受信したときに呼び出されます。
- OnApplyChanges は、ユーザーが [OK] または [ 適用 ] ボタンをクリックしてプロパティの変更をコミットするときに呼び出されます。
- OnDisconnect は、ユーザーがプロパティ シートを閉じるときに呼び出されます。
このチュートリアルの残りの部分では、これらの各方法について説明します。
関連トピック