Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/124.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 调整IE中浏览器栏托管的Webbrowser控件的大小_C++_Windows_Internet Explorer_Webbrowser Control - Fatal编程技术网

C++ 调整IE中浏览器栏托管的Webbrowser控件的大小

C++ 调整IE中浏览器栏托管的Webbrowser控件的大小,c++,windows,internet-explorer,webbrowser-control,C++,Windows,Internet Explorer,Webbrowser Control,我有一个自定义浏览器栏(band对象),它承载一个webbrowser控件。我可以正确初始化WebBrowser控件并使其显示网页 但是,我注意到,当我调整浏览器栏的大小时,webbrowser控件的大小不能适当地调整为栏的大小: 调整大小之前: 调整大小后: 我不确定我需要处理哪些事件以及什么可以调整浏览器控件的大小。我在.NET编程方面有一些经验,但没有真正的Windows编程经验 如果您想进一步运行它,我还提供了我的源代码。通常,当承载OLE控件的容器调整大小时,它会查询嵌入对象的IO

我有一个自定义浏览器栏(band对象),它承载一个webbrowser控件。我可以正确初始化WebBrowser控件并使其显示网页

但是,我注意到,当我调整浏览器栏的大小时,webbrowser控件的大小不能适当地调整为栏的大小:

调整大小之前:

调整大小后:

我不确定我需要处理哪些事件以及什么可以调整浏览器控件的大小。我在.NET编程方面有一些经验,但没有真正的Windows编程经验


如果您想进一步运行它,我还提供了我的源代码。

通常,当承载OLE控件的容器调整大小时,它会查询嵌入对象的IOleInPlaceObject接口,并使用SetObjectRects()命令在该界面上告诉控件它的新大小。

此“答案”与原始问题没有直接关系,但我在试图为一个非常类似的问题找到解决方案时遇到了此页面

每当我移动拆分器时,它都会弹回到原来的位置。结果表明,
DESKBANDINFO
mode标志对于垂直边栏的命名不是特别好。我使用的是
DBIMF\u NORMAL
,而我本应该使用
DBIMF\u variablehight

示例代码:

STDMETHODIMP CMyExplorerBar::GetBandInfo(DWORD dwBandID,
                                         DWORD dwViewMode,
                                         DESKBANDINFO* pdbi)
{
    if(pdbi)
    {
        m_dwBandID = dwBandID;
        m_dwViewMode = dwViewMode;

        if(pdbi->dwMask & DBIM_MINSIZE)
        {
            pdbi->ptMinSize.x = 30;
            pdbi->ptMinSize.y = 30;
        }

        if(pdbi->dwMask & DBIM_MAXSIZE)
        {
            pdbi->ptMaxSize.x = -1;
            pdbi->ptMaxSize.y = -1;
        }

        if(pdbi->dwMask & DBIM_INTEGRAL)
        {
            pdbi->ptIntegral.x = 1;
            pdbi->ptIntegral.y = 1;
        }

        if(pdbi->dwMask & DBIM_ACTUAL)
        {
            pdbi->ptActual.x = 500;
            pdbi->ptActual.y = 0;
        }

        if(pdbi->dwMask & DBIM_TITLE)
        {
            StringCchCopy(pdbi->wszTitle, 256, L"My Sidebar");
        }

        if(pdbi->dwMask & DBIM_MODEFLAGS)
        {
            pdbi->dwModeFlags = DBIMF_VARIABLEHEIGHT;
        }

        if(pdbi->dwMask & DBIM_BKCOLOR)
        {
            pdbi->dwMask &= ~DBIM_BKCOLOR;
        }

        return S_OK;
    }

    return E_INVALIDARG;
}