HOWTO: Use Automation to Set the Printer from an MFC ProjectID: Q180312
|
This article discusses how to use version 4.2 of the Microsoft Foundation
Class (MFC) library installed with Microsoft Visual C++ versions 5.0 and
6.0 to automate specifying and setting the printer used with a project.
This article shows how to use the IDispatch interface of the _Application
object from the typelib of the application that you are automating. The
sample code specifically uses Microsoft Word, but the approach works with
any other application where the _Application IDispatch interface has the
appropriate member functions.
Alternatively, you can use the Windows API library functions to set the
printer directly; however, this article does not discuss this approach.
You can copy the code in this article to the message handler function of an event defined in an MFC .cpp file. However, the purpose of the code is to illustrate the process of using the IDispatch interfaces and member functions defined in the Msword8.olb type library. The primary benefit comes from reading and understanding the code so that you can modify the example, or write code from scratch to automate setting the printer.
Q178749 HOWTO: Create an Automation Project Using MFC and a Type Library
#include "msword8.h"
CWaitCursor begin; // Hourglass.
{
_Application objApp; // You need an application's typelib;
// therefore, you need an object.
// You can use any application that has an IDispatch
// interface containing SetActivePrinter()
// and GetActivePrinter() member functions.
objApp.CreateDispatch("Word.Application");
// This could be objApp.CreateDispatch("Excel.Application");
// For a network printer, use:
// objApp.SetActivePrinter("\\\\PrnServr\\HP3SI@1134 on NE01");
// For a local printer, use:
objApp.SetActivePrinter("HP LaserJet IIISi");
::Sleep(10000); // You need to provide a considerable wait if
// you are using a network printer.
CString thePrinter = objApp.GetActivePrinter(); // Verify the new
// setting.
MessageBox(thePrinter, "The Active Printer Is",
MB_SETFOREGROUND | MB_OK);
// Release the objApp object and close Word.
objApp.Quit(COleVariant((short)FALSE), // VARIANT* SaveChanges
COleVariant((short)TRUE), // VARIANT* OriginalFormat
COleVariant((short)FALSE) // VARIANT* RouteDocument
);
// If you use Excel for its IDispatch interface functions,
// objApp.Quit() takes no parameters.
}
Additional query words:
Keywords : kbcode kbole kbExcel kbMFC kbVC500 kbVC600 kbWord
Version : win95:5.0; WINNT:5.0,6.0
Platform : Win95 winnt
Issue type : kbhowto
Last Reviewed: August 8, 1999