Re: Page Orientation
"Sarath" <CSarath@gmail.com> wrote in message
news:1181887052.790095.196400@i38g2000prf.googlegroups.com...
Is it possible to set page Orientation with CHtmlView class while
Printing? If yes how?
I've not used CHtmlView, but I have printed in landscape mode from an
embedded CWebBrowser2 control... for this to work I used an "IE print
template" that you can read about from these articles (google them):
Beyond Print Preview: Print Customization for Internet Explorer 5.5 by
Chuck Ainslie
Print Preview 2: The Continuing Adventures of Internet Explorer 5.5 Print
Customization by Chuck Ainslie
This actually was quite involved to write a print template, but the above
articles had samples. I had to extend the samples to support landscape
mode. To use the print template, the code was:
void CViewPopupHtml::PrintTemplate (DWORD nCmdId)
{
// Can't use m_wb.ExecWB() because we need to specify the command group
// to be CGID_MSHTML. Must get down and dirty with COM:
LPDISPATCH lpDispatch = m_wb.GetDocument(); // m_wb is the
CWebBrowser2 control
if (lpDispatch)
{
LPOLECOMMANDTARGET lpOleCommandTarget = NULL;
HRESULT hResult =
lpDispatch->QueryInterface(IID_IOleCommandTarget,(void **)
&lpOleCommandTarget);
lpDispatch->Release();
if (SUCCEEDED(hResult))
{
// Print template support should be supported by browser
ASSERT (m_bPrintTemplate);
VARIANT vTemplatePath;
V_VT(&vTemplatePath) = VT_BSTR;
CStringW strPrintTemplate (_T("IEPrintTemplate.htm")); //
print template is stored in "IEPrintTemplate.htm"
V_BSTR(&vTemplatePath) = SysAllocString (strPrintTemplate);
hResult = lpOleCommandTarget->Exec (&CGID_MSHTML, nCmdId,
OLECMDEXECOPT_DONTPROMPTUSER, &vTemplatePath, NULL);
lpOleCommandTarget->Release();
}
}
}
-- David