在一个对话框上加了一个CWebBrowser2。
====
void CVerifyCodeDlg::OnButtonTest2() 
{
    ......
    // 获得Html文档指针
    IHTMLDocument2 *pDocument = NULL;
    hr = pDisp->QueryInterface( IID_IHTMLDocument2, (void**)&pDocument );
    ASSERT( SUCCEEDED( hr ) );
    ASSERT( pDocument ); 
    ......}
编译的时候老是出错:
error C2065: 'IHTMLElement2' : undeclared identifier

解决方案 »

  1.   

    有没有包头文件
    #include <mshtml.h>
    #include <atlbase.h>
    #include <oleacc.h>
      

  2.   

    给个实例:
    如何从 HWND 获取 IHTMLDocument 2
    #include <mshtml.h>
    #include <atlbase.h>
    #include <oleacc.h>BOOL CALLBACK EnumChildProc(HWND hwnd,LPARAM lParam)
    {
    TCHAR buf[100]; ::GetClassName( hwnd, (LPTSTR)&buf, 100 );
    if ( _tcscmp( buf, _T("Internet Explorer_Server") ) == 0 )
    {
    *(HWND*)lParam = hwnd;
    return FALSE;
    }
    else
    return TRUE;
    };//You can store the interface pointer in a member variable 
    //for easier access
    void CDlg::OnGetDocInterface(HWND hWnd) 
    {
    CoInitialize( NULL ); // Explicitly load MSAA so we know if it's installed
    HINSTANCE hInst = ::LoadLibrary( _T("OLEACC.DLL") );
    if ( hInst != NULL )
    {
    if ( hWnd != NULL )
    {
    HWND hWndChild=NULL;
    // Get 1st document window
    ::EnumChildWindows( hWnd, EnumChildProc, (LPARAM)&hWndChild );
    if ( hWndChild )
    {
    CComPtr<IHTMLDocument2> spDoc;
    LRESULT lRes;

    UINT nMsg = ::RegisterWindowMessage( _T("WM_HTML_GETOBJECT") );
    ::SendMessageTimeout( hWndChild, nMsg, 0L, 0L, SMTO_ABORTIFHUNG, 1000, (DWORD*)&lRes ); LPFNOBJECTFROMLRESULT pfObjectFromLresult = (LPFNOBJECTFROMLRESULT)::GetProcAddress( hInst, _T("ObjectFromLresult") );
    if ( pfObjectFromLresult != NULL )
    {
    HRESULT hr;
    hr = (*pfObjectFromLresult)( lRes, IID_IHTMLDocument, 0, (void**)&spDoc );
    if ( SUCCEEDED(hr) )
    {
    CComPtr<IDispatch> spDisp;
    CComQIPtr<IHTMLWindow2> spWin;
    spDoc->get_Script( &spDisp );
    spWin = spDisp;
    spWin->get_document( &spDoc.p );
    // Change background color to red
    spDoc->put_bgColor( CComVariant("red") );
    }
    }
    } // else document not ready
    } // else Internet Explorer is not running
    ::FreeLibrary( hInst );
    } // else Active Accessibility is not installed
    CoUninitialize();
    }
      

  3.   

    to Fjzminghui(正找工作中):
    这3个头文件都包含了啊。不知道怎么回事。我用VC 6.0
      

  4.   

    IHTMLElement2
    代码没贴对...
    你上面的代码中没这个
      

  5.   

    先下载新的SDK安装
    http://www.microsoft.com/msdownload/platformsdk/sdkupdate/ 然后注意Tools->Options->Directories中的顺序。把include/lib设置中的sdk目录放到最前面