1、在http://topic.csdn.net/u/20080223/17/01f87ee8-662e-4e09-ae9e-e3ce081c3c0c.html这个帖子中有两种方式在BHO中注册IE中的表单事件(input的onclick事件和onsubmit事件)请问如何用AtlAdvise的方式注册表单事件?
2、在invoke中又是如何区分并识别所产生事件的元素的名称及内容的?
分值不够再另外开贴。。
2、在invoke中又是如何区分并识别所产生事件的元素的名称及内容的?
分值不够再另外开贴。。
class ATL_NO_VTABLE CMySink : public CComObjectRootEx<CComSingleThreadModel>,
public CComCoClass<CMySink, CLSID_NULL>,
public IDispEventImpl<1, CMySink, &DIID_HTMLFormElementEvents, &LIBID_HTMLDocument>
{
public:
DWORD m_dwCookie;
...... HRESULT CMySink::ConnectToForm(IHTMLFormElement* pForm)
{
return AtlAdvise(pForm, (IUnknown*)(CComObject<CMySink>*)this, DIID_HTMLFormElementEvents, &m_dwCookie);
}
...
};
如何注册:
IHTMLFormElement* pForm = ...;
CComObject<CMySink>* pSink = NULL;
pSink->CreateInstance(&pSink);
pSink->ConnectToForm(pForm);
FIESite := pUnkSite;
if not Supports(FIESite, IWebBrowser2, FIE) then
Exit;
if not Supports(FIE, IConnectionPointContainer, FCPC) then
Exit;
// 挂接事件
FCPC.FindConnectionPoint(DWebBrowserEvents2, FCP);
FCP.Advise(Self, FCookie);
那我表单的事件该如何注册啊?是不是应该放在documentcomplete事件中进行注册啊?请您指点。