Article: Q156732
Product(s): Microsoft C Compiler
Version(s): 4.0,4.01,5.0
Operating System(s):
Keyword(s): kbole kbprint kbIE300 kbIE301 kbIE400 kbie401 kbMFC kbPrinting kbVC kbIE302 kbhowto
Last Modified: 07-SEP-2001
-------------------------------------------------------------------------------
The information in this article applies to:
- Microsoft Visual C++, 32-bit Enterprise Edition, version 5.0
- Microsoft Visual C++, 32-bit Professional Edition, version 5.0
- Microsoft Internet Explorer (Programming) versions 4.0, 4.01
-------------------------------------------------------------------------------
SUMMARY
=======
The Web Browser component of Internet Explorer 3.x and 4.x does not support a
Print method. You can still print the contents of the Web Browser control using
one of these methods:
- Set focus to the Web Browser control and send a key combination of CTRL+P.
-or-
- Call the GetDocument() method that returns an IDispatch*. Using the
IDispatch*, call QueryInterface() on IID_IOleCommandTarget. With the object
pointer returned, call Exec(NULL, OLECMDID_PRINT,0, NULL,NULL).
MORE INFORMATION
================
The following code can be used to cause the Web Browser control to print its
contents. In this example, m_ctlWebBrowser is an instance of the wrapper class
generated by Class Wizard for the control. m_ctlWebBrowser is contained in a
dialog and initialized in the OnInitDialog function. A Print button on the
dialog is wired to an OnPrint function. The Print button is enabled in response
to the NavigateComplete event of the Web Browser control.
Sample Code
-----------
BOOL CAboutDlg::OnInitDialog()
{
CDialog::OnInitDialog();
m_ctlWebBrowser.Navigate(_T("http://www.microsoft.com"),
NULL, NULL, NULL, NULL);
return TRUE;
}
First Method
------------
void CAboutDlg::OnPrint()
{
CWnd* pWnd = GetFocus ();
m_ctlWebBrowser.SetFocus ();
// send Ctrl-P
keybd_event (VK_CONTROL, 0, 0, 0);
keybd_event ('P', 0, 0, 0);
// set focus to control that previously had focus
if (pWnd);
pWnd->SetFocus ();
}
Second Method
-------------
// DOCOBJ.H comes with the Internet Client SDK and is installed by
// default in the "\INetSDK\Include" directory
#include <docobj.h>
void CAboutDlg::OnPrint()
{
LPDISPATCH lpDispatch = NULL;
LPOLECOMMANDTARGET lpOleCommandTarget = NULL;
lpDispatch = m_ctlWebBrowser.GetDocument();
ASSERT(lpDispatch);
lpDispatch->QueryInterface(IID_IOleCommandTarget,
(void**)&lpOleCommandTarget);
ASSERT(lpOleCommandTarget);
lpDispatch->Release();
// print contents of web browser control
lpOleCommandTarget->Exec(NULL, OLECMDID_PRINT, 0, NULL,NULL);
lpOleCommandTarget->Release();
}
REFERENCES
==========
Internet Client SDK Online documentation.
Additional query words:
======================================================================
Keywords : kbole kbprint kbIE300 kbIE301 kbIE400 kbie401 kbMFC kbPrinting kbVC kbIE302 kbhowto
Technology : kbVCsearch kbIEsearch kbAudDeveloper kbSDKIESearch kbSDKIE400 kbSDKIE401 kbVC500 kbVC32bitSearch kbVC500Search
Version : :4.0,4.01,5.0
Issue type : kbhowto
=============================================================================