Frage zum eigenen CPrintDialog?



  • Hallo,

    ich wollte für meine Anwendung einen eigenen CPrintDialog basteln,
    an die angeschlossenen Drucker komme ich so ran

    CComboBox * pb= (CComboBox*)GetDlgItem(IDC_COMBO_DRUCKER);
    //alle drucker in combo
    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++)
    	{
    		pb->AddString(pPrnInfo->pPrinterName);
    		pPrnInfo++;
    	}
    	pb->SetCurSel(0);
    }
    delete[] pBuffer;
    

    Nun soll man auch im Querformat drucken können, mit den standard CPrintDialog
    ging das folgender massen:

    DEVMODE *myMode = dlg.GetDevMode(); // myMode mit Printer defaults 
    myMode->dmOrientation = DMORIENT_LANDSCAPE; // defaultmässig Querformat 
    dcPrint.Attach(dlg.GetPrinterDC()); // get printer dc 
    dcPrint.ResetDC(myMode); // resets dc to new DEVMODE
    

    An die DEVMODE-Struktur kommme ich beim standard-CPrintDlg ja ganz einfach
    mittels der Methode 'dlg.GetDevMode() ' ,
    wie aber komme ich an die DEVMODE-Struktur wenn ich 'nur' den Namen des
    Druckers/Treibers habe??? 😕

    pls help me 🙄 🙄


Anmelden zum Antworten