• Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 275
  • Last Modified:

Printing Bitmaps

I'm currently working on a project in Visual C++ 1.52 on a Windows for Workgroups 3.11 system.  I am trying to print a bitmap image to a thermal receipt printer.  I know the printer has the capabilities to print graphics because I can print the image from Paintbrush.  I know the basics of output of an image an am confused as to why it won't work in this situation.  I have the following code in my OnDraw function in my View class (derived from CFormView):

// Display the bitmap
CDC* pDisplayMemDC = new CDC;
CBitmap *pBitmap = new CBitmap;                            pBitmap->LoadBitmap(IDB_DEPART_BITMAP);         pDisplayMemDC->CreateCompatibleDC(pDC);
pDC->BitBlt( 0, 0, 5000, 5000, pDisplayMemDC, 0, 0,                     SRCCOPY);

When I try to print nothing is output.  When I put the same code in the OnDraw but don't condition before it with "if (IsPrinting)" I have no problem.  It comes right up on screen.  Any help would be appreciated.
      delete pDisplayMemDC;
      delete pBitmap;
  • 3
1 Solution
You cannot print a bitmap directly. You have to convert it into
DIB (Device Indepedant Bitmap) and then render it using StretchBlt API function to render it on printer device.

If you have MFC example code, look for application like Diblook
or something like that.

Hope this helps
You can print a bitmap (DDB) directly. A printer DC is just like a screen DC.
Well Chensu.

I tried a lot for that. My application had something like 60 to 70 bitmaps
and I had to do convert each one of them to DDB before producing acceptable
output on paper.

Eventually, I used to saved the convert bitmaps as DDB files in order to make code a bit faster and less resource consuming.

I even dug up some microsoft references, but all seemed
to say the same.
jstephe1Author Commented:
I tried the same code and displaying it on screen was no problem.  I know I have a pointer to the print device since I can output text.  How do I take a file (test.bmp) and make it print?  Does anyone have sample code?
If you have sample examples, look under sample called DIBLOOK. Iam not sure if
it comes with VC 1.52. You will have to mess around with code a bit, to get what you
want, but it is not too difficult.

If not, please post your email address where I can send you
the code. (There are about 4 to 5 files involved)

Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

Join & Write a Comment

Featured Post

The 14th Annual Expert Award Winners

The results are in! Meet the top members of our 2017 Expert Awards. Congratulations to all who qualified!

  • 3
Tackle projects and never again get stuck behind a technical roadblock.
Join Now