2009-08-21 12 views
0

Ich verwende IMoniker :: BindToObject-Funktion, und ich habe den Artikel auf MSDN gelesen.COM: Kann IBindCtx * Parameter von IMoniker :: BindToObject NULL sein?

Der Artikel doen't sagen, dass der erste Parameter NULL sein kann, aber das Beispiel-Code auf der folgenden Seite verwendet NULL als Argument:

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);) 

da ich nicht ganz verstehen die Verwendung dieses Parameters und ich brauche nicht die zusätzliche Bindung Informationen von der Funktion zurückgegeben,

Ich möchte fragen, "kann das Argument NULL sein?".

danke im voraus.

Antwort

0

Die documentation on BindToObject schlägt vor, dass Sie einen bind Kontext CreateBindCtx Verwendung erstellen können und passieren:

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(); 

Die Schnittstelle beschreibt nur das Verhalten, dass das Objekt unterstützen muss, aber nicht, wie es erforderlich ist, um es zu unterstützen. Auf der einen Seite erfordert das implementierende Objekt möglicherweise, dass Sie einen Bindungskontext übergeben, oder nicht. Da die Dokumentation, auf die Sie verwiesen haben, sie auslässt, ist sie in Ihrer Situation wahrscheinlich nicht erforderlich.

Auf der anderen Seite scheint es mir nicht sonderlich wichtig, ein Bindekontextobjekt zu erstellen und es zu übergeben. Sie können das gleiche an jeden Anruf an BindToObject übergeben, so dass der Overhead klein sein kann. Wenn Sie also besorgt sind, dass es erforderlich ist, würde ich es einfach tun.

+0

Ich habe das gesehen, aber es ist ein bisschen ein Problem, wenn ich viele Objekte binden muss. Weil ich keine Informationen in pbc Parameter benötige. –

+0

Ich fügte einige Gedanken hinzu, nichts schlüssiges –