Print a Real Image Size in Inches (C++ 5.0 and later)

Take the following steps to start a project and to add some code that prints an image:

1. Start a new project as follows:

Run Microsoft Visual C++ 5.0, select the File >New menu option, and do the following:

a. Click the Projects tab.

b. Select MFC AppWizard (exe) as the project type

c. In the Project name text box, specify tutor.

d. In the Location text box, specify the path of the project.

e. Click the OK button.

2. In the Step 1 dialog box, do the following:

a. Select Dialog based.

b. Click the Next button.

3. In the Step 2 of 4 dialog box, do the following:

a. Ensure that About Box is selected.

b. Ensure that 3D Controls is selected.

c. Select ActiveX Controls.

d. Click the Next button.

4. In the Step 3 of 4 dialog box, do the following:

a. For comments, ensure that Yes, Please is selected.

b. For how to use the MFC library, select As a statically linked library.

c. Click the Next button.

5. In the Step 4 of 4 dialog box, just click Finish.

6. Read New Project Information, and click OK. (The AppWizard creates the project files and opens the project.)

7. Include the L_OCX.H and L_OcxErr.H header files, which define LEAD constants, in your project as follows:

 

#include "L_OCX.H"
#include "L_OcxErr.H"

8. Add a LEAD control to the main window as follows:

a. In the Project Workspace, click the ResourceView tab.

b. Double-click the tutor resources folder to open it.

c. Double-click the Dialog folder to open it.

d. Double-click IDD_TUTOR_DIALOG to design the dialog box.

e. Select the TODO... text control; then press the Delete key to delete it.

f. From the main menu, select Project > Add To Project > Components and Controls.

g. Select Registered ActiveX Controls.

h. Double-click the LEAD Control (16) icon. (The Confirm Classes dialog box appears.)

i. Ensure that CLead, CPicture, and COleFont are checked.

j. Click OK to complete the selection; then click Close to close the Component Gallery. (The LEAD control appears in the Controls toolbar.)

k. image\btnlead.gif Click the LEAD control icon; then size and position the control as you want it to appear at run time.

l. Use the right mouse button to edit the properties of the new LEAD control.

m. Change the ID to IDC_LEAD1.

9. Do the following to add m_Lead1 to the CTutorDlg class and link the variable to the LEAD control using dynamic data exchange:

a. Press Ctrl-W. (The MFC ClassWizard dialog box appears.)

b. Click the Member Variables tab.

c. In the Class Name box, select CTutorDlg.

d. In the Control IDs list, select IDC_LEAD1.

e. Click the Add Variable... button.

f. Specify m_Lead1 as the variable name, and Control as the category.

g. Click OK to close the dialog box, and click OK to close the MFC ClassWizard.

10. Go to the OnInitDialog() function as follows:

a. In the Project Workspace, click the ClassView tab.

b. Double-click the tutor classes folder to open it.

c. Expand the CTutorDlg class.

d. Double-click the OnInitDialog() function to edit it.

11. Edit the OnInitDialog() function to add the following code after the line that says //TODO: Add extra initialization here:

 

long hdcPrinter;   // Printer device context
float fRealWidth;   // Image's real width in inches
float fRealHeight;   // Image's real height in inches
float fPrnDPIX;   // Number of pixels per logical inch along the screen width
float fPrnDPIY;   // Number of pixels per logical inch along the screen height

m_Lead1.Load("c:\\image1.cmp", 0, 0, 1);

fRealWidth = m_Lead1.GetBitmapWidth() / m_Lead1.GetBitmapXRes();
fRealHeight = m_Lead1.GetBitmapHeight() / m_Lead1.GetBitmapYRes();

hdcPrinter = m_Lead1.PrintStart();

fPrnDPIX = (float)GetDeviceCaps((HDC)hdcPrinter, LOGPIXELSX);
fPrnDPIY = (float)GetDeviceCaps((HDC)hdcPrinter, LOGPIXELSY);

m_Lead1.Render(hdcPrinter, 1, 1, fPrnDPIX * fRealWidth, fPrnDPIY * fRealHeight);

m_Lead1.PrintEnd(hdcPrinter);

12. On the main menu, select Build > Build tutor.exe to build the project.

13. On the main menu, select Build > Execute tutor.exe to run the project.