//创建打印机的dc
HDC hdc = ::CreateDC(strDriverName,strPrinterName,NULL,NULL);HBITMAP hbit;
//hbit的创建省略,已经验证hbit没有问题HDC hMemDC = ::CreateCompatibleDC(hdc);
HBITMAP hOldBitmap = (HBITMAP)::SelectObject(hMemDC,hbit);if (StartDoc(hdc,&di) != SP_ERROR) 
{
StartPage(hdc);
::BitBlt(hdc,0,0,nWidth,nHeight,
hMemDC,0,0,SRCCOPY);
TextOut(hdc,10,10,"aaaaaaaaaaa",18);
EndPage(hdc);
EndDoc(hdc);
}aaaaaaaa能打印出来,但是图不能出来,什么问题啊?

解决方案 »

  1.   

    那你得看看nWidth,nHeight是否正确。建议用StretchBlt打印。
      

  2.   

    如果aaaaaa能出来,那问题就出在
    ::BitBlt(hdc,0,0,nWidth,nHeight,hMemDC,0,0,SRCCOPY);
    上.不要以为打印dc和屏幕dc是一样的,其实不一样,差别还很大.1.如果bitblt不能成功,那么stretchblt也一样不会成功;
    2.和nWidth 以及nHeight没有关系;
    3.和memdc选入的Bitmap的大小有关(好象大概是不能超过1024*1024).解决办法:先创建一个合理大小的bitmap选入memdc,然后分割hbitmap,分块bitblt或stretchblt