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.


Log in to reply