Druckerausrichtung ändern

langer1801

Erfahrenes Mitglied
Hallo, Leute,

ich arbeite an einem Projekt, in dem die Dokumente grundsätzlich im Querformat ausgedruckt werden. Ich will nun den Druckerstatus abfragen und den Drucker automatisch anpassen. Leider habe ich in der MSDN-Library keinerlei Hinweise gefunden, wie man an die Druckereigenschaften kommt und diese verändern kann. Auch in der gängigen Fachliteratur zur MFC hab ich nix gefunden. Wer kann mir helfen?

Mfg

Wilfried
 
Hi,
wollte nur noch mal an das Thema erinnern.
Weiß denn wirklich niemand, wie man den Status vom Standarddrucker auslesen und ändern kann?

Mfg
langer
 
Schau' Dir mal in den MSDN CPrinterDialog an und da besonders die GetDevMode(...) und CreatePrinterDC(...) Funktionen. In der DEVMODE-Struktur kannst Du, nachdem Du sie mit GetDevMode geholt hast, dmOrientation auf DMORIENT_LANDSCAPE setzen. Dann übergibst Du diese Struktur an CreatePrinterDC(...). Den so erzeugten DC nimmst Du dann zum drucken. Genauer kann ich es Dir leider auch nicht sagen, aber vielleicht hat das ja schon mal einer verwendet :)
 
danke, jokey2,
diese Information hab ich gesucht, aber nicht gewußt wo ich sie finde.
Jetzt kann ich weiterexperimentieren.
 
Hi, habs nun endlich geschafft. Für alle, die vor demselben Problem stehen, hier meine Lösung:
Code:
{
	DWORD dwBytesNeeded;
	LPPRINTER_INFO_2 pPrinterInfo2=NULL;
	HANDLE phPrinter;
	DWORD sizeOfPrintInfo=0;
	pPrinterInfo2=(LPPRINTER_INFO_2) new char [sizeOfPrintInfo];


	char szPrinter[50];
	DWORD zeichen = 50;
	GetDefaultPrinter(szPrinter, &zeichen);
	if(OpenPrinter(szPrinter,&phPrinter,NULL))
	{
		if(!GetPrinter(phPrinter,2,(LPBYTE)pPrinterInfo2,sizeOfPrintInfo,&dwBytesNeeded))
		{
			delete[] pPrinterInfo2;
			pPrinterInfo2=NULL;
			pPrinterInfo2=(LPPRINTER_INFO_2) new char [dwBytesNeeded];
			GetPrinter(phPrinter,2,(LPBYTE)pPrinterInfo2,dwBytesNeeded,&dwBytesNeeded);
			if(pPrinterInfo2->pDevMode->dmOrientation==1)
			{
				pPrinterInfo2->pDevMode->dmOrientation=2;
				SetPrinter(phPrinter,2,(LPBYTE)pPrinterInfo2,0);
			}
			delete[] pPrinterInfo2;
			pPrinterInfo2=NULL;
		}
         ClosePrinter(phPrinter);
	}
}
Mfg

langer
 
Zuletzt bearbeitet:
Zurück