我的代码如下: IViewObject *pViewObject = NULL;
IOleObject *pOleObject = NULL;
HRESULT hret;
HDC hDrawDC;
HBITMAP hBmp, hBmpOld;
int iWidth, iHeight;
SIZEL hmSizeL;
SIZEL pxSizeL;
RECTL rectL; CRect rect;
GetClientRect(rect); CBookLocal7Doc* m_pDoc = GetDocument(); LPDISPATCH DispatchPtr;
DispatchPtr = m_pDoc->m_WebBrows.get_Document(); if(DispatchPtr == NULL)
{
return ;
}
hret = DispatchPtr->QueryInterface(IID_IViewObject2, (void**)&pViewObject);
if(FAILED(hret))
{
return ;
}
hret = DispatchPtr->QueryInterface(IID_IOleObject,(void**)&pOleObject);
if(FAILED(hret))
{
pViewObject->Release();
return ;
} hDrawDC = ::CreateCompatibleDC(pDC->m_hDC); hret = pOleObject->GetExtent(DVASPECT_CONTENT,&hmSizeL);
if(hret != S_OK)
{
pViewObject->Release();
pOleObject->Release();
return ;
} AtlHiMetricToPixel(&hmSizeL, &pxSizeL);
iWidth = pxSizeL.cx;
iHeight = pxSizeL.cy;
rectL.top = 0;
rectL.left = 0;
rectL.right = iWidth;
rectL.bottom = iHeight; int bpp = GetDeviceCaps(hDrawDC,BITSPIXEL);
int planes = GetDeviceCaps(hDrawDC,PLANES); int printwidth = GetDeviceCaps(pDC->m_hDC,HORZRES);
int printheight = GetDeviceCaps(pDC->m_hDC,VERTRES); hBmp = ::CreateCompatibleBitmap(hDrawDC,iWidth,iHeight);
hBmpOld = (HBITMAP)::SelectObject(hDrawDC,hBmp); hret = pViewObject->Draw( DVASPECT_CONTENT, //Aspect to draw - we always want content
-1, //Always -1
NULL, //We don't use pvAspect
NULL, //We don't need to specify a target device
NULL, //We don't need a target HIC
hDrawDC, //The DC to draw on
&rectL, //The bounding box to draw in
NULL, //Only for metafiles
NULL, //Not using a callback
0 ); //Not using a callback ::StretchBlt(pDC->m_hDC,0,0,printwidth,printheight,hDrawDC,0,0,iWidth,iHeight,SRCCOPY );
if(hret != S_OK)
{
pViewObject->Release();
pOleObject->Release();
::SelectObject(hDrawDC,hBmpOld);
::DeleteDC(hDrawDC);
::DeleteObject(hBmp);
return ;
}结果图片保存或是打印都比较虚,字边缘有锯齿,好像象素有问题。
没法做到IE自带的打印预览那样的显示效果
IOleObject *pOleObject = NULL;
HRESULT hret;
HDC hDrawDC;
HBITMAP hBmp, hBmpOld;
int iWidth, iHeight;
SIZEL hmSizeL;
SIZEL pxSizeL;
RECTL rectL; CRect rect;
GetClientRect(rect); CBookLocal7Doc* m_pDoc = GetDocument(); LPDISPATCH DispatchPtr;
DispatchPtr = m_pDoc->m_WebBrows.get_Document(); if(DispatchPtr == NULL)
{
return ;
}
hret = DispatchPtr->QueryInterface(IID_IViewObject2, (void**)&pViewObject);
if(FAILED(hret))
{
return ;
}
hret = DispatchPtr->QueryInterface(IID_IOleObject,(void**)&pOleObject);
if(FAILED(hret))
{
pViewObject->Release();
return ;
} hDrawDC = ::CreateCompatibleDC(pDC->m_hDC); hret = pOleObject->GetExtent(DVASPECT_CONTENT,&hmSizeL);
if(hret != S_OK)
{
pViewObject->Release();
pOleObject->Release();
return ;
} AtlHiMetricToPixel(&hmSizeL, &pxSizeL);
iWidth = pxSizeL.cx;
iHeight = pxSizeL.cy;
rectL.top = 0;
rectL.left = 0;
rectL.right = iWidth;
rectL.bottom = iHeight; int bpp = GetDeviceCaps(hDrawDC,BITSPIXEL);
int planes = GetDeviceCaps(hDrawDC,PLANES); int printwidth = GetDeviceCaps(pDC->m_hDC,HORZRES);
int printheight = GetDeviceCaps(pDC->m_hDC,VERTRES); hBmp = ::CreateCompatibleBitmap(hDrawDC,iWidth,iHeight);
hBmpOld = (HBITMAP)::SelectObject(hDrawDC,hBmp); hret = pViewObject->Draw( DVASPECT_CONTENT, //Aspect to draw - we always want content
-1, //Always -1
NULL, //We don't use pvAspect
NULL, //We don't need to specify a target device
NULL, //We don't need a target HIC
hDrawDC, //The DC to draw on
&rectL, //The bounding box to draw in
NULL, //Only for metafiles
NULL, //Not using a callback
0 ); //Not using a callback ::StretchBlt(pDC->m_hDC,0,0,printwidth,printheight,hDrawDC,0,0,iWidth,iHeight,SRCCOPY );
if(hret != S_OK)
{
pViewObject->Release();
pOleObject->Release();
::SelectObject(hDrawDC,hBmpOld);
::DeleteDC(hDrawDC);
::DeleteObject(hBmp);
return ;
}结果图片保存或是打印都比较虚,字边缘有锯齿,好像象素有问题。
没法做到IE自带的打印预览那样的显示效果
解决方案 »
- WINDOWS程序设计第五版中的一个简单问题,在线等!!!
- WinEggDrop 您好,我想请教下您有关于sock5工具方面的问题,请pm我你的qq,另付辛苦费写个东西
- 三个十位数相加的概率分布问题
- ACE的初级问题--《ACE程序员教程》中的udp例子不管用
- 类的友元函数无法访问类中私有的vector对象?
- 请问在一个用sdk写的程序里面,如何使用mfc的类?
- 老大们 请问如何把纯文本表格中的内容保存为word格式文件(我只有二十分了)
- 我用CPropertySheet::Create()函数创建的无模式属性页,为什么添加的页面中的控件不显示?
- 如何在VC++中创建多层目录
- 虽然问题幼稚但很急,请问我要动态的添加两极菜单
- 我对陆其明其人的看法,同意的近来顶一下。
- 多线程写文件的问题
或者是DC设备??
搞了半天都不行