2009-08-21 3 views
0

IMoniker :: BindToObject関数を使用していますが、MSDNでこの記事を読んでいます。COM:IMoniker :: BindToObjectのIBindCtx *パラメータをNULLにできますか?

記事は、最初のパラメータがNULLになることができると言うdoen'tが、次のページのサンプルコードは、引数として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になることができますか?"

ありがとうございます。

答えて

0

documentation on 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を呼び出すたびに同じものを渡すことができるので、オーバーヘッドが小さくなる可能性があります。したがって、それが必要であることを心配しているなら、私はそれをやるだけです。

+0

私はこれを見ましたが、多くのオブジェクトをバインドしなければならないと困ります。なぜなら私はpbcパラメータの情報を必要としないからです。 –

+0

私はいくつかの考えを加えました。 –

関連する問題