FILE: IEZOOM.EXE Changes the Font Size of WebBrowser Control

Last reviewed: January 19, 1998
Article ID: Q156693
The information in this article applies to:
  • Microsoft ActiveX SDK, version 1.0
  • Internet Client SDK, version 4.0, 4.01
  • Microsoft Internet Explorer 3.0, 3.01, 3.02, 4.0, 4.01

SUMMARY

IEZOOM demonstrates how to change the font size of the text displayed in a Web Browser control embedded in an MFC container application.

The following file is available for download from the Microsoft Software Library:

 ~ Iezoom.exe (size: 51155 bytes) 

For more information about downloading files from the Microsoft Software Library, please see the following article in the Microsoft Knowledge Base:

   ARTICLE-ID: Q119591
   TITLE     : How to Obtain Microsoft Support Files from Online Services

MORE INFORMATION

Microsoft Internet Explorer (IE) obtains much of its functionality from COM objects implemented in Shdocvw.dll, Mshtml.dll, and Urlmon.dll. The IE application itself is a thin wrapper that aggregates the functionality of these components. Developers who wish to tap directly into the functionality of these underlying components are frequently interested in mimicking the functionality of IE. While many IE features are exposed through the Web Browser (SHDOCVW) control's automation model, other features available on the IE menus, including changing the font size of the text of the current page, are not exposed this way. This sample demonstrates how to use the IOleCommandTarget interface to change the font size of the text of the current page displayed by a WebBrowser control.

The IOleCommandTarget interface consists of two methods, QueryStatus and Exec, in addition to the IUnknown methods. QueryStatus allows the client to determine if an object supports a particular command. If QueryStatus indicates that the specified command is enabled, the client can call Exec to execute or show Help for the command. The list of standard command identifiers is defined in the OLECMDID enumeration in the header file DOCOBJ.H. For more information on the IOleCommandTarget interface, see the Internet Client SDK online documentation.

The sample is a Microsoft Foundation Classes (MFC) 4.2 SDI application that mimics the functionality of the Fonts pop-up under IE's View menu. Both the sample and IE provide the user with five scaling factors: largest, large, medium, small, smallest. While a page is displayed in medium by default, choosing any of the other options scales the text of the page up and down respectively. The following code taken from the sample shows how to accomplish this using the IOleCommandTarget interface:

   void CIezoomView::ChangeScale(IEScaleSize scaleSize)
   {
      HRESULT hr;

      LPDISPATCH pDisp = NULL;
      LPOLECOMMANDTARGET pCmdTarg = NULL;

      if (!m_wb.m_hWnd)
      {
         TRACE("Web Browser Control not yet created.\n")
         return;
      }

      pDisp = m_wb.GetDocument();

      if (!pDisp)
      {
         TRACE("Unable to get document from Web Browser.\n");
         return;
      }

      // The document controls the availability of commands items,
      // so get the OLE command target interface from the document
      hr = pDisp->QueryInterface(IID_IOleCommandTarget,
   (LPVOID*)&pCmdTarg);
      if (pCmdTarg)
      {
         // Now use the command target to do something useful
         // like (un-)zoom the page
         OLECMD rgCmd[1] = {{OLECMDID_ZOOM, 0}};
         // Is the command available for execution?
         hr = pCmdTarg->QueryStatus(NULL, 1, rgCmd, NULL);
         if (SUCCEEDED(hr) && OLECMDF_ENABLED == rgCmd[0].cmdf)
         {
            TRACE("Zoom enabled.\n");
            VARIANT vaZoomFactor;   // Input arguments
            VariantInit(&vaZoomFactor);
            V_VT(&vaZoomFactor) = VT_I4;
            V_I4(&vaZoomFactor) = fontSize;
            hr = pCmdTarg->Exec(NULL, OLECMDID_ZOOM,
                     OLECMDEXECOPT_DONTPROMPTUSER,
                     &vaZoomFactor, NULL);
            VariantClear(&vaZoomFactor);
         }
         else
         {
            TRACE("Unable to query for status of command ;
            (OLECMDID_ZOOM).\n");
         }
      }
      else
      {
         TRACE("Unable to get command target from Web Browser ;
         document.\n");
      }

      if (pCmdTarg) pCmdTarg->Release(); // release document's command
                                            target

      if (pDisp) pDisp->Release(); // release document's dispatch interface
   }

Steps To Run

  1. Build the IEZoom sample.

  2. Run the IEZoom sample.

If you are connected to the Internet, the ActiveX page on www.microsoft.com will be displayed. If you do not have an Internet connection, modify the Navigate() call in CIezoomView::OnCreate() by passing a different URL.

  1. From the View Menu, choose a different font selection.


Additional query words: SCALE SCALING WEBBROWSER
Keywords : AXSDKWebBrowser kbgraphic
Technology : kbMfc
Version : 1.0
Platform : WINDOWS
Issue type : kbfile


THE INFORMATION PROVIDED IN THE MICROSOFT KNOWLEDGE BASE IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND. MICROSOFT DISCLAIMS ALL WARRANTIES, EITHER EXPRESS OR IMPLIED, INCLUDING THE WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL MICROSOFT CORPORATION OR ITS SUPPLIERS BE LIABLE FOR ANY DAMAGES WHATSOEVER INCLUDING DIRECT, INDIRECT, INCIDENTAL, CONSEQUENTIAL, LOSS OF BUSINESS PROFITS OR SPECIAL DAMAGES, EVEN IF MICROSOFT CORPORATION OR ITS SUPPLIERS HAVE BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. SOME STATES DO NOT ALLOW THE EXCLUSION OR LIMITATION OF LIABILITY FOR CONSEQUENTIAL OR INCIDENTAL DAMAGES SO THE FOREGOING LIMITATION MAY NOT APPLY.

Last reviewed: January 19, 1998
© 1998 Microsoft Corporation. All rights reserved. Terms of Use.