|
DoOnDropFiles(pdt);
}
}
}
//演示如何从IHTMLDataTransfer得到IDataObject
void CHtmlDocument2::DoOnDropFiles(CComQIPtr<IHTMLDataTransfer> pDataTransfer)
{
CComQIPtr<IServiceProvider>
psp;
CComQIPtr<IDataObject>
pdo;
if ( FAILED(pDataTransfer->QueryInterface(IID_IServiceProvider, (void **) &psp)) )
{
return;
}
if ( FAILED(psp->QueryService(IID_IDataObject, IID_IDataObject, (void **) &pdo)) )
{
return;
}
COleDataObject DataObject;
DataObject.Attach(pdo);
......
}
6、再次回到标准方法
上述通过Event Sink响应网页拖拽的方法已经能够很好地工作,可说“趋于完美”了,但仍有两个“小”问题:第一,必须与document建立连接才能工作,而建立连接的时机不容易掌握(MSDN中推荐的位置是DocumentComplete,但在NavigateComplete中也可,或者是检测到WebBrowser的readystate变为READYSTATE_INTERACTIVE时进行连接)。第二,实现方法还是略显复杂。
有没有更简单的方法呢?我决定再次对GetDropTarget进行“调研”。所谓“踏破铁鞋无觅处,得来全不费功夫”,晃了一眼GetDropTarget方法的声明后,灵机一动,我忽然想到了办法。事实证明,这是完美的解决办法。
上一篇:我对PMP考试的一些体会
下一篇:关于N皇后问题高效试探回溯算法的分析
|