软件注册站
热情软件屋

 
如何将窗口显示的位图直接打印出来
编号: QA004397    
建立日期: 2001年9月5日 最后修改日期: 2002年1月20日
所属类别: C/C++ - 打印与报表
   
    操作系统: win2000/nt
    编程工具: VC6.0
    问题: 我想将窗口显示的位图直接打印出来,该怎么作呢?(yucxtry)
   
    假如你使用的是Doc/View体系。
    如果你的位图是在OnDraw中绘制的,那么你在OnPaint中调用OnDraw就可以了,如:
    void CMyView::OnPrint( CDC *pDC, CPrintInfo *pInfo )
    
{
    
OnDraw( pDC );
    
}
    

    如果你的位图不是在OnDraw中绘制的,而是在其他窗口中,你需要先获得那个窗口的DC,如pDCSrc,然后使用CDC::BitBlt就可以了,如:
    void CMyView::OnPrint( CDC *pDC, CPrintInfo *pInfo )
    
{
    
pDC->BitBlt(0, 0, 100, 200, pDCSrc, 0, 0, SRCCOPY );
    
}
    

    总之,打印机打印位图的方法和窗口显示位图的方法基本一样。
    
    盛剑国的意见:
    BitBlt函数会造成打印的图片非常小,需要得到打印机的分辨率然后用StretchBlt,但是问题又来了,有些打印机不支持StretchBlt,可能需要用StretchDibits函数,总之远远比李海说的复杂。

    

此问题由李海回答。

附加关键字:编程, 源程序, programming, source code, C/C++, MFC, C++ Builder, Borland C++, Turbo C, C, BCB, 打印与报表, print, report crystal report, active report

   
 
把这个问题推荐给朋友
   
 
   
您的意见类别
您的名字
您的电子邮件
您的建议(请尽可能详细)
 
 

版权所有 1997-2008 热情软件屋
如果您有任何建议和意见, 请给我发个电子邮件 askpro@china-askpro.com
Web Designed by ZebraStudio