Senin, 25 Agustus 2025

HTML nya C++ nya

 

<HTML>
<HEAD>
<SCRIPT>
function firebuttonclick()
{
   var neweventobj = document.createEventObject();
   neweventobj.clientX = 100;
   neweventobj.clientY = 100;
   button2.fireEvent("onclick", neweventobj);
}
function handleclick()
{
   alert("Received " + window.event.type + " event on " + window.event.srcElement.id + " with clientX: " + window.event.clientX + " clientY: " + window.event.clientY);
}
</SCRIPT>
</HEAD>
<BODY bgcolor="#000000" text="#008080">
<INPUT type=button value="Button 1" name=button1 id=button1 onclick=firebuttonclick()><b> - Click here to fire a click event on the second button below. </b>
<BR><BR>
<INPUT type=button value="Button 2" name=button2 id=button2 onclick=handleclick()><b> - Or click this directly.
</BODY>
</HTML>

=========================

#include <atlbase.h>
#define CHECKPTR(ptr) if ((ptr) == NULL) goto cleanup;

void CMyView::OnFireEvent() 
{
    HRESULT         hr = S_OK;
    BSTR            eventName = NULL;
    VARIANT         name, index, eventobj;
    VARIANT_BOOL    vBool;    

    CComPtr<IDispatch>              pDisp = NULL;
    CComPtr<IDispatch>              pEltDisp = NULL;
    CComPtr<IHTMLElementCollection> pEltColl = NULL;
    CComPtr<IHTMLEventObj>          pEvent = NULL;

    CComQIPtr<IHTMLDocument2, &IID_IHTMLDocument2>  pDoc2;
    CComQIPtr<IHTMLDocument4, &IID_IHTMLDocument4>  pDoc4;
    CComQIPtr<IHTMLEventObj2, &IID_IHTMLEventObj2>  pEvent2;
    CComQIPtr<IHTMLElement3, &IID_IHTMLElement3>    pElt3;
    CComQIPtr<IDispatch, &IID_IDispatch>            pEventDisp;
    
      // m_webBrowser is the IWebBrowser2 ptr of
      // the Web browser control you host.
    CHECKPTR(pDisp = m_webBrowser.GetDocument());    
    CHECKPTR(pDoc2 = pDisp);

    //Get the element you want to fire the event on.
    hr = pDoc2->get_all(&pEltColl);
    if (FAILED(hr) || !pEltColl)
        goto cleanup;

    VariantInit(&name);
    V_VT(&name) = VT_BSTR;
    V_BSTR(&name) = SysAllocString(L"button2");
    VariantInit(&index);
    V_VT(&index) = VT_I2;
    V_I2(&index) = 0;
    
    // We are assuming there's only one element with that name on the page,
    // else you must expect a collection instead of a single element.
    hr = pEltColl->item(name, index, &pEltDisp);
    if (FAILED(hr) || !pEltDisp)
        goto cleanup;

    CHECKPTR(pElt3 = pEltDisp);

    // Create the event object and populate it.
    CHECKPTR(pDoc4 = pDoc2);

    hr = pDoc4->createEventObject(NULL, &pEvent);
    if (FAILED(hr) || !pEvent)
        goto cleanup;

    CHECKPTR(pEvent2 = pEvent);
    CHECKPTR(pEventDisp = pEvent2);

    pEvent2->put_clientX(100);
    pEvent2->put_clientY(100);
    
    // Fire the event.
    eventName = SysAllocString(L"onclick");
    VariantInit(&eventobj);
    V_VT(&eventobj) = VT_DISPATCH;
    V_DISPATCH(&eventobj) = pEventDisp;

    hr = pElt3->fireEvent(eventName, &eventobj, &vBool);

cleanup:
    if (V_BSTR(&name))
        SysFreeString(V_BSTR(&name));
    if (eventName)
        SysFreeString(eventName);
}

Tidak ada komentar: