void CLocateDlg::OnOK()
{
    HRESULT hr = S_OK;    IHTMLDocument2 *pDoc = (IHTMLDocument2 *)m_web.get_Document();
    if (pDoc == NULL) return;    IHTMLDocument3 *pDoc_3 = NULL;
    if (pDoc->QueryInterface(IID_IHTMLDocument3, (void **)&pDoc_3) != S_OK)
    {
        pDoc->Release();
        return;
    }
    
    IHTMLElement *pLng = NULL;
    if (pDoc_3->getElementById(_T("lngX"), &pLng) == S_OK)
    {
        _variant_t var;
        if (pLng->getAttribute(_T("value"), 0, &var) == S_OK && var.vt == VT_BSTR)
            m_pt.x = ::wcstod(var.bstrVal, NULL);
        pLng->Release();
    }    IHTMLElement *pLat = NULL;
    if (pDoc_3->getElementById(_T("latY"), &pLat) == S_OK)
    {
        _variant_t var;
        if (pLat->getAttribute(_T("value"), 0, &var) == S_OK && var.vt == VT_BSTR)
            m_pt.y = ::wcstod(var.bstrVal, NULL);
        pLat->Release();
    }    pDoc_3->Release();
    pDoc->Release();    CDialog::OnOK();
}
m_web 为 WebBrowser 控件, 网页中需要获取的值用一个id表示

解决方案 »

  1.   

    如果你不想用控件预先加载网页来获得数据
    你可以将整个网页下载下来,然后自己解析xml
      

  2.   

    可以利用BHO技术,实时抓取页面上的关键字,然后将数据保存或发送给另外的进程
      

  3.   

    由于每个网页结构都不一样,没有什么通用工具,需要自己编程实现,无非是先获取HTML,再解析HTML提取出数据。
    可以用WebBrowser加载网页,然后用MSHTML解析HTML提取出数据。
    也可以用WinInet或WinHTTP等向WEB服务器发起GET请求获取HTML,然后用正则表达式或MSHTML提取出想要的数据。