Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Einer der Konstruktoren für die Graphics-Klasse empfängt ein Gerätekontexthandle und ein Druckerhandle. Wenn Sie Windows GDI+-Befehle an bestimmte PostScript-Drucker senden, ist die Leistung besser, wenn Sie Ihr Graphics-Objekt mit diesem bestimmten Konstruktor erstellen.
Die folgende Konsolenanwendung ruft GetDefaultPrinter auf, um den Namen des Standarddruckers abzurufen. Der Code übergibt den Druckernamen an CreateDC , um ein Gerätekontexthandle für den Drucker zu erhalten. Der Code übergibt auch den Druckernamen an OpenPrinter , um einen Druckerhandle zu erhalten. Sowohl das Gerätekontexthandle als auch das Druckerhandle werden an den Grafikkonstruktor übergeben. Dann werden zwei Figuren auf dem Drucker gezeichnet.
Hinweis
Die GetDefaultPrinter-Funktion wird nur unter Windows 2000 und höher unterstützt.
#include <windows.h>
#include <gdiplus.h>
#include <stdio.h>
using namespace Gdiplus;
INT main()
{
// Initialize GDI+.
GdiplusStartupInput gdiplusStartupInput;
ULONG_PTR gdiplusToken;
GdiplusStartup(&gdiplusToken, &gdiplusStartupInput, NULL);
DWORD size;
HDC hdcPrint;
HANDLE printerHandle;
DOCINFO docInfo;
ZeroMemory(&docInfo, sizeof(docInfo));
docInfo.cbSize = sizeof(docInfo);
docInfo.lpszDocName = "GdiplusPrint";
// Get the length of the printer name.
GetDefaultPrinter(NULL, &size);
TCHAR* buffer = new TCHAR[size];
// Get the printer name.
if(!GetDefaultPrinter(buffer, &size))
{
printf("Failure");
}
else
{
// Get a device context for the printer.
hdcPrint = CreateDC(NULL, buffer, NULL, NULL);
// Get a printer handle.
OpenPrinter(buffer, &printerHandle, NULL);
StartDoc(hdcPrint, &docInfo);
StartPage(hdcPrint);
Graphics* graphics = new Graphics(hdcPrint, printerHandle);
Pen* pen = new Pen(Color(255, 0, 0, 0));
graphics->DrawRectangle(pen, 200, 500, 200, 150);
graphics->DrawEllipse(pen, 200, 500, 200, 150);
delete(pen);
delete(graphics);
EndPage(hdcPrint);
EndDoc(hdcPrint);
ClosePrinter(printerHandle);
DeleteDC(hdcPrint);
}
delete buffer;
GdiplusShutdown(gdiplusToken);
return 0;
}