Frage zu DEVMODE-Struktur
-
Hallo,
wie komme ich an die DEVMODE-Struktur eines Druckers?
Alle Systemdrucker auslesen kann ich hiermit:DWORD dwSize,dwPrinters; ::EnumPrinters(PRINTER_ENUM_LOCAL,NULL,5,NULL,0,&dwSize,&dwPrinters); BYTE * pBuffer=new BYTE[dwSize]; ::EnumPrinters(PRINTER_ENUM_LOCAL,NULL,5,pBuffer,dwSize,&dwSize,&dwPrinters); if(dwPrinters==0) MessageBox("Kein Drucker installiert!","Achtung!"); else { PRINTER_INFO_5 * pPrnInfo= (PRINTER_INFO_5*) pBuffer; for(UINT i=0;i<dwPrinters;i++) { m_vecDrucker.push_back(CString(pPrnInfo->pPrinterName)); pPrnInfo++; } pb->SetCurSel(0); } delete[] pBuffer;
Nun möchte ich im Querformat drucken, daher muss ich die DEVMODE-Struktur mittels:
myMode->dmOrientation = DMORIENT_LANDSCAPE;
anpassen und dann wieder setzen. Kann mir einer helfen
-
Über PrintDlg bzw. PrintDlgEx sollte das (z.B.) möglich sein...
-
Erstmal danke, ich habe das jetzt anders gelöst. Ich merke mir den Std-Drucker mittels ::GetDefaultPrinter(...), setze dann den Drucker den ich haben will mittels ::SetFefaultPrinter(...), mach mit eine Instanz von CPrintDlg dlg(FALSE), und hole die DEVMODE dev=dlg.GetDevMode(), zum schluss setze ich den alten std-Drucker wieder.