As advertised, this chapter's project focuses on the printing of checkout and fine-payment receipts. But we'll also add all of the code that lets patrons and librarians check in and check out books and other library items.
Load the Chapter 20 (Before) Code project, either through the New Project templates or by accessing the project directly from the installation directory. To see the code in its final form, load Chapter 20 (After) Code instead.
In the interest of frank and honest discussion, I must tell you that I didn't come up with the basic code for raw printing in this section. Oh, some of the code is mine, both stylistically and imaginatively. But I didn't figure out all of the links between the application and the winspool.drv file. That code originally came from Microsoft Knowledge Base article number 322090, which describes raw printing support from .NET applications. It uses a feature of .NET known as "interop" that allows .NET code to "interoperate" with older unmanaged COM-based components and applications.
Boy, am I glad that I got that off my chest. I mean, if anyone thought I was the one who came up with the code you are about to see, there would be angry mobs storming my house nightly, and general turmoil in the streets. The code, contained in the
RawPrinterHelper class, is just plain ugly. Well, there's no sense in postponing it any longer. Create a new class named RawPrinterHelper.vb, and use the following code for its ...