Printing OLE control
Mike Lechner -- Mike_Lechner@msn.com
Sunday, November 03, 1996
Environment: VC4.2b, Win95
Hello,
I'm trying to print the contents of my CWebBrowser control, which is derived
from CWnd.
The Microsoft documentation sez to do this:
Printing from the Web Browser Control
Use the following steps to print the document that the Web browser control is
currently displaying:
1 Retrieve the document object's IDispatch interface by calling
IWebBrowser::get_Document.
2 Retrieve the document object's IOleCommandTarget interface by calling
IDispatch::QueryInterface.
3 Print the document by calling IOleCommandTarget::Exec(NULL,OLECMDID_PRINT,
OLECMDEXECOPT_DONTPROMPTUSER, NULL,NULL). This function acts as though the
Print menu item was chosen through the user interface.
which immediately gave me a knot in my stomach. Here's what I tried:
void CTest2View::OnPrint(CDC* pDC, CPrintInfo*)
{
LPDISPATCH disp = fBrowser.GetDocument ();
if (disp) {
IOleCommandTarget* target;
HRESULT result =
disp->QueryInterface (fBrowser.GetClsid (), (void **) &target);
if (result == S_OK)
target->Exec (NULL, OLECMDID_PRINT,
OLECMDEXECOPT_DONTPROMPTUSER, NULL, NULL);
else if (result == E_NOINTERFACE)
TRACE ("Interface not supported.\n");
}
}
which returns E_NOINTERFACE from the QueryInterface call. I'm rather confused
about the relationship between classes (such as CWebBrowser) and their OLE
interface (such as IWebBrowser).
Can anyone shine a light my way?
Thanks, Mike
Mike_Lechner@msn.com
James Chen -- james@jcsoft.com
Friday, November 08, 1996
There is a MFC WebBrowser sample application at =
http://www.jcsoft.com/samples/jc_browser/
The sample shows how to integrate WebBrowser ActiveX into Visual C++ =
project, How to process the events and how to print and COPY the =
WebBrowser ActiveX. There are also some source annotation.
Enjoy
James
http://www.jcsoft.com
----------
From: Mike Lechner[SMTP:Mike_Lechner@msn.com]
Sent: Sunday, November 03, 1996 11:21 AM
To: mfc-l@netcom.com
Subject: Printing OLE control
Environment: VC4.2b, Win95
Hello,=20
I'm trying to print the contents of my CWebBrowser control, which is =
derived=20
from CWnd.
The Microsoft documentation sez to do this:
Printing from the Web Browser Control=20
Use the following steps to print the document that the Web browser =
control is=20
currently displaying:=20
1 Retrieve the document object's IDispatch interface by calling=20
IWebBrowser::get_Document.=20
2 Retrieve the document object's IOleCommandTarget interface by calling =
IDispatch::QueryInterface.=20
3 Print the document by calling =
IOleCommandTarget::Exec(NULL,OLECMDID_PRINT,=20
OLECMDEXECOPT_DONTPROMPTUSER, NULL,NULL). This function acts as though =
the=20
Print menu item was chosen through the user interface.=20
which immediately gave me a knot in my stomach. Here's what I tried:
void CTest2View::OnPrint(CDC* pDC, CPrintInfo*)
{
LPDISPATCH disp =3D fBrowser.GetDocument ();
if (disp) {
IOleCommandTarget* target;
HRESULT result =3D=20
disp->QueryInterface (fBrowser.GetClsid (), (void **) &target);
if (result =3D=3D S_OK)
target->Exec (NULL, OLECMDID_PRINT,
OLECMDEXECOPT_DONTPROMPTUSER, NULL, NULL);
else if (result =3D=3D E_NOINTERFACE)
TRACE ("Interface not supported.\n");
}
}
which returns E_NOINTERFACE from the QueryInterface call. I'm rather =
confused=20
about the relationship between classes (such as CWebBrowser) and their =
OLE=20
interface (such as IWebBrowser). =20
Can anyone shine a light my way?
Thanks, Mike
Mike_Lechner@msn.com
| Вернуться в корень Архива
|