11

によると

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

IWebBrowser2.ExecWB(OLECMDID_OPTICAL_ZOOM, ...)コントロールキーとマウスホイールを使用してホストされた WebBrowser をズームするには、 のpvaIn値で呼び出す必要がありますが100
呼び出した後、ctrl+mousewheel はコンテンツをズームしません

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;
4

2 に答える 2

8

ジェイソンペニー

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;
于 2012-08-02T18:44:40.193 に答える
4

http://msdn.microsoft.com/en-us/library/cc849094(v=vs.85).aspx#OptInHighDPIから:

Webを大きくする:DPIスケーリングとInternet Explorer 8

Webブラウザコントロール(WebOC)の高DPI動作へのオプトイン

以前に開発されたWebOCとの互換性を維持するために、デフォルトでは、InternetExplorer8はInternetExplorer8の高DPI動作を使用してWebOCのWebコンテンツをレンダリングせず、絶対値で指定されたフォントをスケールアップするInternetExplorer7の動作を使用します。ポイントなど。プログラムでInternetExplorer8の高DPI動作を利用するには、と呼ばれるDOCHOSTUIFLAGDOCHOSTUIFLAG_DPI_AWAREを使用する必要があります。このフラグは、パラメータの1つとしてDOCHOSTUIINFO構造を持つメソッドGetHostInfoを使用して使用します。次に、DOCHOSTUIINFOには、そのメンバーの1つとして呼び出される演算子DWORDがあり、これは1つ以上のDOCHOSTUIFLAGで構成できます。dwFlags値。WebOCでInternetExplorer8の高DPI動作を利用するにはDOCHOSTUIFLAG_DPI_AWAREdwFlagsに含める必要があります。

高DPI動作にオプトインするとWebOCのHTMLコンテンツがどのように表示されるかをすばやく簡単にシミュレートする方法は、Internet Explorer 8で同等のHTMLコンテンツ(HTMLファイルで構成)を開き、同等のズーム設定(120 DPIから125%ズーム、144 DPIから150%ズーム)でのレンダリング。実際の高DPIシナリオでWebOCをテストして、HTMLコンテンツが期待どおりにレンダリングされることを完全に確認することをお勧めします。

于 2012-05-08T20:28:39.223 に答える