Printer Vorwahl



  • hallo,
    bin neu hier und schlage mich seit tagen mit einem problem herum,
    hoffentlich kann mir hier einer helfen.
    folgendes: in einem bestimmten programm benutze ich einen nadeldrucker und
    möchte gerne, daß dieser im PrintDialog schon vorgewählt ist und nicht
    der Standard-Drucker. Die ständige Auswahl ist nervig und öfter schicke
    ich die seite auf den falschen drucker.
    Entwicklungsumgebung MFC Visual C++ 6.

    Danke im vorraus.



  • Nicht probiert! Ich würde bevor ich den Dialog aufrufe die PRINTDLG Struktur ändern. PRINTDLG::hDevMode schaut gut aus. DEVMODE::dmDeviceName auf den gewünschten Drucker setzen.



  • Vielen Dank für die schnelle Antwort, aber das habe ich schon probiert:

    void CDPDAdressApp::SetPrinter()
    {
    CPageSetupDialog dlg;
    dlg.GetDeviceName();

    PRINTDLG pd;
    pd.lStructSize=(DWORD)sizeof(PRINTDLG);
    BOOL bRet=GetPrinterDeviceDefaults(&pd);
    if(bRet)
    {
    // protect memory handle with ::GlobalLock and ::GlobalUnlock
    DEVMODE FAR *pDevMode=(DEVMODE FAR *)::GlobalLock(m_hDevMode);

    CString PrinterName = "NEC Pinwriter P2plus";
    strcpy((char*)pDevMode->dmDeviceName, PrinterName); !!!!!!!!!!!!!!!!!!!!!

    pDevMode->dmFields = DM_ORIENTATION | DM_PAPERSIZE |
    DM_PAPERWIDTH | DM_PAPERLENGTH;
    pDevMode->dmPaperSize = DMPAPER_USER;
    pDevMode->dmPaperWidth = 1450;
    pDevMode->dmPaperLength = 1015;

    pDevMode->dmOrientation = 1; // Hochformat !!

    ::GlobalUnlock(m_hDevMode);
    }
    }

    Hoch / Querformat und PaperSize einstellen funktioniert aber die Printer-Vorwahl nicht.
    mfG



  • keiner eine Idee ?


Anmelden zum Antworten