jas*_*nny 10 delphi delphi-2007 iwebbrowser2 twebbrowser
根据
http://www.rendelmann.info/blog/CommentView,guid,356fbe68-3ed6-4781-90a4-57070a0141da.aspx和http://msdn.microsoft.com/en-us/library/aa770056(v=vs. 85)的.aspx
获得托管web浏览器缩放使用控制键和鼠标滚轮应该只需要调用IWebBrowser2.ExecWB(OLECMDID_OPTICAL_ZOOM, ...)具有pvaIn的价值100,
但调用它后,按ctrl +鼠标滚轮仍然不缩放内容
代码我正在使用Delphi 2007:
const
OLECMDID_OPTICAL_ZOOM = 63;
var
pvaIn, pvaOut: OleVariant;
begin
pvaIn := 100;
pvaOut := NULL;
WebBrowser1.ControlInterface.ExecWB(OLECMDID_OPTICAL_ZOOM,
OLECMDEXECOPT_DONTPROMPTUSER, pvaIn, pvaOut);
end;
Run Code Online (Sandbox Code Playgroud)
jasonpenny,
100是默认值,如果要更改缩放,则必须增大或减小此值,从10到1000.
我写了一个测试,这里是代码:
type
TFormWebBrowserZoom = class(TForm)
WebBrowser1: TWebBrowser;
procedure FormMouseWheelDown(Sender: TObject; Shift: TShiftState; MousePos: TPoint; var Handled: Boolean);
procedure FormMouseWheelUp(Sender: TObject; Shift: TShiftState; MousePos: TPoint; var Handled: Boolean);
procedure FormShow(Sender: TObject);
private
FZoom: Integer;
FLastZoom: Integer;
procedure ApplyZoom(ZoomValue: Integer);
procedure DecZoom;
procedure IncZoom;
end;
implementation
const
OLECMDID_OPTICAL_ZOOM = $0000003F;
MinZoom = 10;
MaxZoom = 1000;
ZoomFactor = 20;
DefaultZoom = 100;
procedure TFormWebBrowserZoom.FormShow(Sender: TObject);
begin
WebBrowser1.Navigate('http://www.cesarromero.com.br');
FZoom := DefaultZoom;
FLastZoom := DefaultZoom;
end;
procedure TFormWebBrowserZoom.ApplyZoom(ZoomValue: Integer);
var
pvaIn, pvaOut: OleVariant;
begin
if ZoomValue = FLastZoom then
Exit;
FLastZoom := ZoomValue;
pvaIn := ZoomValue;
pvaOut := Null;
WebBrowser1.ControlInterface.ExecWB(OLECMDID_OPTICAL_ZOOM, OLECMDEXECOPT_DONTPROMPTUSER, pvaIn, pvaOut);
end;
procedure TFormWebBrowserZoom.DecZoom;
begin
System.Dec(FZoom, ZoomFactor);
if FZoom < MinZoom then
FZoom := MinZoom;
ApplyZoom(FZoom);
end;
procedure TFormWebBrowserZoom.IncZoom;
begin
System.Inc(FZoom, ZoomFactor);
if FZoom > MaxZoom then
FZoom := MaxZoom;
ApplyZoom(FZoom);
end;
procedure TFormWebBrowserZoom.FormMouseWheelDown(Sender: TObject; Shift: TShiftState; MousePos: TPoint; var Handled: Boolean);
begin
DecZoom;
end;
procedure TFormWebBrowserZoom.FormMouseWheelUp(Sender: TObject; Shift: TShiftState; MousePos: TPoint; var Handled: Boolean);
begin
IncZoom;
end;
Run Code Online (Sandbox Code Playgroud)
From http://msdn.microsoft.com/en-us/library/cc849094(v=vs.85).aspx#OptInHighDPI:
Making the Web Bigger: DPI Scaling and Internet Explorer 8
Opt-In to High DPI Behavior for Web Browser Controls (WebOCs)
In order to preserve compatibility with previously developed WebOCs, by default Internet Explorer 8 does not render the web content of WebOCs using the Internet Explorer 8 High DPI behavior, but rather uses the Internet Explorer 7 behavior, which scales up fonts specified in absolute values, such as points. To take advantage of the Internet Explorer 8 High DPI behavior in your programs, you need to use a DOCHOSTUIFLAG called
DOCHOSTUIFLAG_DPI_AWARE. You use this flag by using the method GetHostInfo, which has a DOCHOSTUIINFO structure as one of its parameters. In turn, DOCHOSTUIINFO has a operator DWORD calleddwFlagsas one of its members, that can consist of one or more DOCHOSTUIFLAG values. You must includeDOCHOSTUIFLAG_DPI_AWAREin dwFlags in order to take advantage of the Internet Explorer 8 High DPI behavior in your WebOC.模拟选择加入高 DPI 行为后 WebOC 的 HTML 内容如何显示的快速而简单的方法是在 Internet Explorer 8 中打开等效的 HTML 内容(由 HTML 文件组成),然后简单地查看以等效缩放设置(120 DPI 至 125% 缩放,144 DPI 至 150% 缩放)进行渲染。我们建议您在实际的高 DPI 场景中测试 WebOC,以完全确保 HTML 内容按照您的希望呈现。
| 归档时间: |
|
| 查看次数: |
5340 次 |
| 最近记录: |