Re: Advising to submit form event.
Yes. DIID_HTMLFormElementEvents2 is good.
It is good, but say how(!!!), how can I advise to it? I have tried to
find connection point from IHTMLWindow2 interface:
hr=m_spBrowser->get_Document((LPDISPATCH*)&pDoc);
if (SUCCEEDED(hr)){
CComPtr<IHTMLWindow2> pWin;
hr=pDoc->get_parentWindow(&pWin);
if(SUCCEEDED(hr)){
CComQIPtr<IConnectionPointContainer>
spC=pWin;
CComPtr<IConnectionPoint> spP3;
hr=spC->FindConnectionPoint(DIID_HTMLFormElementEvents2,&spP3);
if (SUCCEEDED(hr)){ // not succeeded!
DWORD dwTemp;
hr=spP3->Advise(reinterpret_cast<IDispatch*>(this),&dwTemp);
}
}
Then I tried finding connection point to each form in current document
:
CComPtr<IHTMLElementCollection> pCol;
hr=pDoc->get_all(&pCol);
if (SUCCEEDED(hr)) {
long lLen;
CComVariant vName("FORM");
pDisp=NULL;
hr=pCol->tags(vName,&pDisp);
CComQIPtr<IHTMLElementCollection> pCol2=pDisp;
hr=pCol2->get_length(&lLen);
CComVariant vIndex;
vIndex.vt=VT_I4;
for (int i=0;i<lLen;i++){
vIndex.intVal=i;
pDisp=NULL;
hr=pCol2->item(vIndex,vIndex,&pDisp);
if (SUCCEEDED(hr) && pDisp!=NULL){
CComQIPtr<IHTMLFormElement> pElem=pDisp;
CComQIPtr<IConnectionPointContainer> spC=pElem;
CComPtr<IConnectionPoint> spP3;
hr=spC->FindConnectionPoint(DIID_HTMLFormElementEvents2,&spP3);
if (pElem!=NULL){ // always == NULL!
VARIANT
var;
var.vt=VT_DISPATCH;
var.pdispVal=(IDispatch*)this;
HRESULT hr=pElem->put_onsubmit(var);
}
}
}
}
The same way I tried to find the connection point from IHTMLDocument
interface. NO!
SO! HOW? Please, say me, Igor - how can I be connected to that point?