//创建打印机的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能打印出来,但是图不能出来,什么问题啊?
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能打印出来,但是图不能出来,什么问题啊?
::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