3,055
社区成员
发帖
与我相关
我的任务
分享
class ATL_NO_VTABLE CMimeFilter :
public CComObjectRootEx<CComSingleThreadModel>,
public CComCoClass<CMimeFilter, &CLSID_MimeFilter>,
public IDispatchImpl<IMimeFilter, &IID_IMimeFilter, &LIBID_iBrowserLib, /*wMajor =*/ 1, /*wMinor =*/ 0>,
public IInternetProtocol
{
public:
CMimeFilter()
{
}
DECLARE_REGISTRY_RESOURCEID(IDR_MIMEFILTER)
BEGIN_COM_MAP(CMimeFilter)
COM_INTERFACE_ENTRY(IMimeFilter)
COM_INTERFACE_ENTRY(IDispatch)
// IInternetProtocol
COM_INTERFACE_ENTRY_IID(IID_IInternetProtocol, IInternetProtocol)
COM_INTERFACE_ENTRY_IID(IID_IInternetProtocolRoot, IInternetProtocol)
END_COM_MAP()
DECLARE_PROTECT_FINAL_CONSTRUCT()
HRESULT FinalConstruct()
{
return S_OK;
}
void FinalRelease()
{
}
public:
// IInternetProtocol interface
public:
STDMETHOD(Start)(
LPCWSTR szUrl,
IInternetProtocolSink *pIProtSink,
IInternetBindInfo *pIBindInfo,
DWORD grfSTI,
DWORD dwReserved);
STDMETHOD(Continue)(PROTOCOLDATA *pStateInfo);
STDMETHOD(Abort)(HRESULT hrReason,DWORD dwOptions);
STDMETHOD(Terminate)(DWORD dwOptions);
STDMETHOD(Suspend)();
STDMETHOD(Resume)();
STDMETHOD(Read)(void *pv,ULONG cb,ULONG *pcbRead);
STDMETHOD(Seek)(
LARGE_INTEGER dlibMove,
DWORD dwOrigin,
ULARGE_INTEGER *plibNewPosition);
STDMETHOD(LockRequest)(DWORD dwOptions);
STDMETHOD(UnlockRequest)();
// filter:
static void __stdcall StatusCallback(HINTERNET, DWORD, DWORD, LPVOID, DWORD);
CComQIPtr<IInternetProtocolSink> m_pProtocolSink;
//IInternetProtocolSink* m_pProtSink;
CComQIPtr<IInternetBindInfo> m_pBindInfo;
HINTERNET m_hInternetSession;
HINTERNET m_hHttpSession;
};
OBJECT_ENTRY_AUTO(__uuidof(MimeFilter), CMimeFilter)
if (_tcsstr(szUrl, _T(".jpg")))
{
// 操作
}
HRESULT getElementsByTagName( BSTR v,
IHTMLElementCollection **pelColl
);
HRESULT IHTMLImgElement::get_src(BSTR *p);
HRESULT IHTMLImgElement::put_src(BSTR v);