首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ Builder >

怎么使图片拉伸以适应CppWebBrowser窗口的大小

2012-03-18 
如何使图片拉伸以适应CppWebBrowser窗口的大小?CppWebBrowser1.Navigate( http://**),图片会按照原始大

如何使图片拉伸以适应CppWebBrowser窗口的大小?
CppWebBrowser1.Navigate( "http://**"),图片会按照原始大小显示,如果图片很大,不能看到图片全貌。只能拖动滚动条查看。请问如何使图片拉伸以适应CPPWebBrowser1的尺寸。

[解决办法]
在CppWebBrowser的OnDocumentComplete事件中加入以下代码:

C/C++ code
#include <mshtml.h>void __fastcall TForm1::CppWebBrowser1DocumentComplete(TObject *Sender,      LPDISPATCH pDisp, Variant *URL){    TCppWebBrowser *cwb = dynamic_cast<TCppWebBrowser *>(Sender);    if (!cwb) return;    IHTMLDocument *spDoc = NULL;    HRESULT hr = cwb->Document->QueryInterface(            ::IID_IHTMLDocument2, (void **)&spDoc);    if (FAILED(hr))        return;    IDispatch *p = NULL;    hr = spDoc->QueryInterface(IID_IDispatch, (void **)&p);    if(FAILED(hr))    {        spDoc->Release();        return;    }    Variant vObj = Variant(p);    int nCount = vObj.OlePropertyGet("Images").OlePropertyGet("Length");    int nWidth, nHeight;    // 遍历页面中的所有图片    for (int i = 0; i < nCount; i++)    {        // 获取图片的宽度        nWidth = vObj.OlePropertyGet("Images")                .OleFunction("Item", i).OlePropertyGet("Width");        // 获取图片的高度        nHeight = vObj.OlePropertyGet("Images")                .OleFunction("Item", i).OlePropertyGet("Height");        // 如果当前图片的宽度大于WebBrowser的宽度,则适当调整图片的宽度        if (nWidth > cwb->Width)            vObj.OlePropertyGet("Images")                    .OleFunction("Item", i).OlePropertySet("Width", cwb->Width - 50);        // 如果当前图片的高度大于WebBrowser的高度,则适当调整图片的高度        if (nHeight > cwb->Height)            vObj.OlePropertyGet("Images")                    .OleFunction("Item", i).OlePropertySet("Height", cwb->Height - 50);    }    p->Release();    spDoc->Release();} 

热点排行