HOWTO: Print from the Microsoft WebBrowser Control
ID: Q156732
|
The information in this article applies to:
-
Microsoft Visual C++, 32-bit Editions, version 5.0
-
Internet Explorer 3.0, 3.01, 3.02, 4.0, 4.01
-
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 kbVC kbIE302
Version : WINDOWS:4.0,4.01; winnt:5.0
Platform : WINDOWS winnt
Issue type :