我正在使用ExecWB()来放大/缩小我的WebBrowser控件,如下所示:
m_lpBrowser->ExecWB(OLECMDID_OPTICAL_ZOOM, OLECMDEXECOPT_DONTPROMPTUSER, &(CComVariant)zoomFactor, NULL);
当我的操作系统dpi为100%(96 dpi)时,这很好用。但是,在OS dpi 150%(144 dpi)下,将缩放系数设置为100会使浏览器中的网页看起来更小。(我希望获得与OS dpi 100%完全相同的布局)
然后我找到了一个旧IE8 document。
在本文档中,OLECMDID_OPTICAL_ZOOM
据说是设置浏览器的ZOOM FACTOR
(ZOOM FACTOR = System DPI / Layout DPI
)
但我无法弄明白Layout DPI
的含义。这是我获得较小网页的根本原因吗?
答案 0 :(得分:3)
This MSDN document提到有一个标志DOCHOSTUIFLAG_DPI_AWARE
控制网络控件的高DPI行为。
在初始化期间设置标志时,Web控件使用IE8高DPI行为;否则,它默认使用IE7高DPI行为。
在IE8高DPI行为下,参数缩放系数意味着网页的缩放百分比,就像您在IE缩放UI中看到的那样。
然而,在IE7高DPI行为下,它有点复杂。根据我的实验结果,
实际比例因子=缩放系数/系统dpi(%)
例如,在系统120dpi(125%)下,设置缩放系数125会导致网页缩放1.0倍。
然而,仍有一些我无法解释的问题:在系统120dpi(125%)下,当我将缩放系数设置为100时,我期望获得80%的网页缩放。事实证明,这些字是80%他们原来的大小,但图片仍然是100%。也许这是IE7缩放中的一个错误。