szEvent = _T("CommandStateChange");
{ BOOL enable = pDispParams->rgvarg[0].boolVal == VARIANT_TRUE ? TRUE : FALSE; LONG commandState = pDispParams->rgvarg[1].lVal; if (commandState == CSC_NAVIGATEBACK) { m_pBrowseDlg->m_bCanGoBack = enable; m_pBrowseDlg->m_btnBack.EnableWindow(enable); } else if (commandState == CSC_NAVIGATEFORWARD) { m_pBrowseDlg->m_bCanGoForward = enable; m_pBrowseDlg->m_btnForward.EnableWindow(enable); } szEvent.Format(_T("CommandStateChange(%ld, %d)"), commandState, enable); }
HRESULT STDMETHODCALLTYPE CControlEventSink:: Invoke(     /* [in] */ DISPID dispIdMember,    /* [in] */ REFIID riid,    /* [in] */ LCID lcid,    /* [in] */ WORD wFlags,    /* [out][in] */ DISPPARAMS __RPC_FAR *pDispParams,    /* [out] */ VARIANT __RPC_FAR *pVarResult,    /* [out] */ EXCEPINFO __RPC_FAR *pExcepInfo,    /* [out] */ UINT __RPC_FAR *puArgErr){    CString szEvent;    switch (dispIdMember)    {    case 0x66:        {            USES_CONVERSION;            CString szText(OLE2T(pDispParams->rgvarg[0].bstrVal));            szEvent.Format(_T("StatusTextChange: \"%s\""), szText);            m_pBrowseDlg->m_TabMessages.m_szStatus = szText;            m_pBrowseDlg->m_TabMessages.UpdateData(FALSE);        }        break;    case 0x6c:        {            LONG nProgress = pDispParams->rgvarg[1].lVal;            LONG nProgressMax = pDispParams->rgvarg[0].lVal;            szEvent.Format("ProgressChange(%d of %d)", nProgress, nProgressMax);            CProgressCtrl &pc = m_pBrowseDlg->m_TabMessages.m_pcProgress;            pc.SetRange(0, nProgressMax);            pc.SetPos(nProgress);        }        break;    case 0x69:        szEvent = _T("CommandStateChange");        break;    case 0x6a:        szEvent = _T("DownloadBegin");        break;    case 0x68:        szEvent = _T("DownloadComplete");        break;    case 0x71:        {            USES_CONVERSION;            CString szText(OLE2T(pDispParams->rgvarg[0].bstrVal));            szEvent.Format(_T("TitleChange: \"%s\""), szText);            CString szTitle;            szTitle.Format(_T("CBrowse - %s"), szText);            m_pBrowseDlg->SetWindowText(szTitle);        }        break;    case 0x70:        szEvent = _T("PropertyChange");        break;    case 0xfa:        {            szEvent = _T("BeforeNavigate2");        }        break;    case 0xfb:        {            szEvent = _T("NewWindow2");                        VARIANTARG *pvars = pDispParams->rgvarg;            CBrowseDlg *pDlg = new CBrowseDlg;            if (pDlg)            {                pDlg->m_clsid = m_pBrowseDlg->m_clsid;                pDlg->Create(IDD_CBROWSE_DIALOG);                                if (pDlg->m_pControlSite)                {                    CIUnkPtr spUnkBrowser;                    pDlg->m_pControlSite->GetControlUnknown(&spUnkBrowser);                    pvars[0].byref = (void *) VARIANT_FALSE;                    spUnkBrowser->QueryInterface(IID_IDispatch, (void **) pvars[1].byref);                }            }        }        break;    case 0xfc:        szEvent = _T("NavigateComplete2");        break;    case 0x103:        szEvent = _T("DocumentComplete");        if (m_pBrowseDlg)        {            m_pBrowseDlg->UpdateURL();        }        break;    case 0xfd:        szEvent = _T("OnQuit");        break;    case 0xfe:        szEvent = _T("OnVisible");        break;    case 0xff:        szEvent = _T("OnToolBar");        break;    case 0x100:        szEvent = _T("OnMenuBar");        break;    case 0x101:        szEvent = _T("OnStatusBar");        break;    case 0x102:        szEvent = _T("OnFullScreen");        break;    case 0x104:        szEvent = _T("OnTheaterMode");        break;    default:        szEvent.Format(_T("%d"), dispIdMember);    }    if (m_pBrowseDlg)    {        m_pBrowseDlg->OutputString(_T("Event %s"), szEvent);    }    return S_OK;}