我正在使用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吗?”。
提前感谢。
答案 0 :(得分: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
的调用,这样开销就可能小。因此,如果您担心需要它,我会这样做。