1

IMoniker::BindToObject 関数を使用しており、MSDN の記事を読みました。

この記事では、最初のパラメーターを NULL にできるとは述べていませんが、次のページのサンプル コードでは引数として NULL を使用しています。

http://msdn.microsoft.com/en-us/library/dd407292%28VS.85%29.aspx

(hr = pMoniker->BindToStorage(0, 0, IID_IPropertyBag, (void **)&pPropBag);)
(hr = pMoniker->BindToObject(NULL, NULL, IID_IBaseFilter, (void**)&pFilter);)

このパラメーターの使用法がよくわからず、関数によって返される追加のバインディング情報は必要ないため、

「引数をNULLにできますか?」と聞きたいです。

前もって感謝します。

4

1 に答える 1

1

BindToObjectのドキュメントでは、CreateBindCtx使用してバインド コンテキストを作成し、それを渡すことができることを示唆しています。

HRESULT hr;       // An error code
IMoniker * pMnk;  // A previously acquired interface moniker

// Obtain an IBindCtx interface.
IBindCtx * pbc; 
hr = CreateBindCtx(NULL, &pbc); 
if (FAILED(hr)) exit(0);  // Handle errors here. 

// Obtain an implementation of pCellRange. 
ICellRange * pCellRange; 
hr = pMnk->BindToObject(pbc, NULL, IID_ICellRange, &pCellRange); 
if (FAILED(hr)) exit(0);  // Handle errors here. 

// Use pCellRange here. 

// Release interfaces after use. 
pbc->Release(); 
pCellRange->Release(); 

インターフェイスは、オブジェクトがサポートする必要がある動作のみを記述しますが、それをサポートするために必要な方法は記述しません。一方では、実装するオブジェクトでバインド コンテキストを渡す必要がある場合と、そうでない場合があります。あなたが指摘したドキュメントではそれが省略されているため、おそらくあなたの状況では必要ありません。

一方、バインド コンテキスト オブジェクトを作成して渡すことは大したことではないように思えます。すべての呼び出しに同じものを渡すことができるBindToObjectので、オーバーヘッドは小さいかもしれません。したがって、それが必要であると心配している場合は、私はそれを行います.

于 2009-08-21T03:36:20.997 に答える