在vs2005   win32   c++   中: 我创建了一个html页面,如何得到一个网页中链接上显示的文字? 用哪个函数?

解决方案 »

  1.   

    要是你有时间,不妨告诉我个实现方法。我用那个win32的常用函数CreateWindow 创建的html页面。想得到页面显示的链接文字,并保存到CString中。
      

  2.   

    你的HTML页面到底是怎么创建的?
      

  3.   

    多谢楼上。
    这么创建的,代码如下: 
    //HTML   window 
    hwndHTML   =   CreateWindow(WC_HTML, 
                                NULL, 
                                WS_CHILD   ¦   WS_BORDER   ¦   WS_VISIBLE, 
                                5, 
                                35, 
                                (rc.right   -   rc.left)   -   10, 
                                (rc.bottom   -   rc.top)   -   33, 
                                 hwndParent, 
                                 NULL, 
                                 hInstance, 
                                 NULL); 
      

  4.   

    IHTMLElement 要用到ATL的东西吗?
      

  5.   

    晕,这只是一个普通窗口而已,又没有打开任何HTML文件,你怎么去访问HTML?
    IHTMLElement不需要ATL,只是一个COM接口而已
      

  6.   


    #define MAX_LOADSTRING  255
    #define MENU_HEIGHT 26
    #define WC_HTMLCONTAINER TEXT("HTMLContainer")
    //
    HWND hWnd;
    HINSTANCE g_hInst;// current instance//
    HWND g_hWndCB;//
    CMyHtmlShow::CMyHtmlShow(void)
    {
    }CMyHtmlShow::~CMyHtmlShow(void)
    {
    }
    //
    LRESULT TestWndProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam);
    //
    HRESULT CMyHtmlShow::RegisterTestClass(HINSTANCE hInstance)
    {
        WNDCLASS wc = { 0 };
        HRESULT hrResult;
        if(!GetClassInfo(hInstance, WC_HTMLCONTAINER, &wc))
        {
            wc.style = CS_HREDRAW | CS_VREDRAW | CS_IME;//CS_IME
    wc.lpfnWndProc = TestWndProc;
    wc.hInstance = hInstance;
            wc.lpszClassName = WC_HTMLCONTAINER;
            wc.hCursor = LoadCursor(NULL, IDC_ARROW);
            wc.hbrBackground = (HBRUSH)(COLOR_WINDOW + 1);
            hrResult = (RegisterClass(&wc) ? S_OK : E_FAIL);
        }
        else
    {
            hrResult = S_OK;
    }
        return hrResult;
    }
    //
    int CMyHtmlShow::CreateMyHtmlWindow(CString strHtml)
    {
    HWND hwndParent;
        HWND hwndHTML;
    //
        VERIFY(SUCCEEDED(RegisterTestClass(hInstance)));
       
        //parent window
        hwndParent = CreateWindow(WC_HTMLCONTAINER,
       L"窗口标题",
       WS_VISIBLE,
       CW_USEDEFAULT,
       CW_USEDEFAULT,
       CW_USEDEFAULT,
       CW_USEDEFAULT,
       NULL,
       NULL,
       hInstance,
       0);
        RECT rc;
        GetWindowRect(hwndParent, &rc); 
    SHFullScreen(hwndParent, SHFS_SHOWTASKBAR | SHFS_SHOWSIPBUTTON | SHFS_SHOWSTARTICON);
    //SHFullScreen(hwndParent, SHFS_SHOWSIPBUTTON | SHFS_SHOWSTARTICON);
    //new position of parent window
    MoveWindow( hwndParent, 
                    rc.left, 
                    rc.top - (MENU_HEIGHT + 5), 
                    rc.right, 
                    rc.bottom - MENU_HEIGHT + 5 + 10, 
                    TRUE);
        VERIFY(InitHTMLControl(hInstance));
    //HTML window
    hwndHTML = CreateWindow(WC_HTML,
                                NULL,
                                //WS_CHILD | WS_BORDER | WS_VISIBLE,
    WS_BORDER | WS_VISIBLE,
                                5,
                                35,
                                (rc.right - rc.left) - 10,
                                (rc.bottom - rc.top) - 33,
                                hwndParent,
                                NULL,
                                hInstance,
                                NULL);
    //
    //SetActiveWindow(hwndParent);
    //
        if (hwndHTML != NULL)
        {
    BSTR bstrURL = SysAllocString(strHtml);
            SendMessage(hwndHTML, DTM_NAVIGATE,0,(LPARAM)bstrURL);//0 turn to 1,DTM_INTEGRALPAGING DTM_NAVIGATE
            SysFreeString(bstrURL);        
            MSG msg;
            while (GetMessage(&msg,NULL,0,0)) //0,0
            {
                TranslateMessage(&msg);
                DispatchMessage(&msg);
            }
        }
        return 0;
    }
    /****************************************************************************
    *                                                                          *
    *  FUNCTION   : HandleCreate ( hwnd )                                      *
    *                                                                          *
    *  PURPOSE    : Creates a new (empty) menu and appends to it the "State"   *
    *               menu items. It sets up the user-defined checks for the *
    *               menu. It then inserts this menu into the main menu bar.    *
    *                                                                          *
    ****************************************************************************/
    VOID APIENTRY HandleCreate(
        HWND hwnd
        )
    {
    #if _WIN32_WCE > 211 //Pocket PC devices
        //Create a MenuBar for WCE devices
       
    SHMENUBARINFO info;
    info.cbSize = sizeof(info);
    info.hwndParent = hwnd;
    info.dwFlags = SHCMBF_HMENU;
    info.nToolBarId = IDR_MENU_HTML;
    info.hInstRes = ::AfxGetInstanceHandle();
    info.nBmpId = 0;
    info.cBmpImages = 0;
    SHCreateMenuBar(&info);
        
        if (FALSE == SHCreateMenuBar(&info))
        {
            MessageBox(hwnd, L"Create MenuBar Failed", L"Error", MB_OK);
        }
        g_hWndCB = info.hwndMB;
        
    #else
        g_hWndCB = CommandBar_Create(g_hInst, hwnd, 1);
        CommandBar_InsertMenubar(g_hWndCB, g_hInst, IDM_MAIN_MENU, 0);
        CommandBar_AddAdornments(g_hWndCB, 0, 0);    
    #endif    
        return;
    }
    //
    HRESULT ProcessMainMenu(HWND hDlg, WORD wLo)
    {
        HRESULT hr = S_OK;
        WCHAR pszSubject[MAX_LOADSTRING];
        IItem * pItem = NULL;
        long lOID = 0;
        switch(wLo)
    {
    case ID_MYOK:
    {
                DestroyWindow(hDlg);
                PostQuitMessage(0);
                break;
    }
        }
        return hr;
    }
    //
    LRESULT TestWndProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
    {
    LRESULT lResult = 0;
        switch (uMsg)
        {
    //MENU
    case WM_CREATE:
    {
    // Create the menu 
    HandleCreate(hwnd);//
    break;
    }
    case WM_COMMAND:
    {
                ProcessMainMenu(hwnd, LOWORD(wParam));
                break;
    }
    case WM_CANCELMODE:
    {
                DestroyWindow(hwnd);
                PostQuitMessage(0);
                break;
    }
    /*case WM_TIMER:
    {
    DestroyWindow(hwnd);
                PostQuitMessage(0);
                break;
    }*/
    default:
            {
                lResult = DefWindowProc(hwnd, uMsg, wParam, lParam);
                break;
            }
        }
        return lResult;
    }
      

  7.   

    顺便说一下:跟踪了一下,发现在HTML页面,可以响应WM_NOTIFY消息,可是不知怎样捕获并在此消息里处理其他函数,在最后的消息循环里面加入此消息的时候,总是打不开预期的html页面。
      

  8.   

    还有WM_NOTIFY消息的使用问题,怎么使用此消息在一个指定的窗口中响应?
      

  9.   

    LZ放邮箱吧,我把我写的MFC与IE交互的范例给你。
      

  10.   

    万分感谢中... [email protected]