Visualizzazione dei risultati da 1 a 6 su 6
  1. #1
    Utente di HTML.it
    Registrato dal
    Jan 2009
    Messaggi
    40

    [C++] Cambiare risoluzione di stampa con struttura DEVMODE e DM_PRINTQUALITY

    uso windows 10 e visual studio 2012 c++
    seguendo degli esempi ho creato un programma base per usare la stampante.
    ora vorrei modificare la risoluzione di stampa.
    ho trovato degli esempi dove ad un certo punto nel codice viene controllata la variabile dmFields con un "AND" sul valore di DM_PRINTQUALITY,questa a esito negativo ed il programma esce

    dmFields della struttura DEVMODE dice quanto segue:
    Specifies whether certain members of the DEVMODE structure have been initialized. If a member is initialized, its corresponding bit is set, otherwise the bit is clear.
    A driver supports only those DEVMODE members that are appropriate for the printer or display technology
    c'è un modo per poter modificare dm_printquality?
    grazie.

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,336
    Se la AND ha esito positivo allora assegni il valore al campo.
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  3. #3
    Utente di HTML.it L'avatar di linoma
    Registrato dal
    Mar 2010
    Messaggi
    1,298
    Dipende se l'api usata legge o imposta i parametri. Cmq se dmFields della struttura DEVNODE ha il bit alto vuol dire che il relativo campo della struttura è significativo altrimenti può anche contenere valori del tutto casuali. Per impostare una qualità diversa devi usare il dialog standard di Win per le stampanti DocumentProperties et similia. Mi pare di capire che puoi anche bypassare il dialog,e quindil'iterazioneutente, e inviare direttamente al driver i settaggi. Quindi se il driver accetta, cambia i diversi settaggi.
    Per gli Spartani e Sparta usa spartan

  4. #4
    Utente di HTML.it
    Registrato dal
    Jan 2009
    Messaggi
    40
    la dm_Fields quando la interrogo ha il bit a zero
    la imposto a uno,chiamo la DocumentProperties ma all'uscita della funzione non e cambiato nulla.
    comunque grazie per le risposte.

    PRINTER_INFO_2 *pInfo2;
    DEVMODE *pDevMode = NULL;

    pInfo2->pDevMode = pDevMode;
    // Do not attempt to set security descriptor...
    pInfo2->pSecurityDescriptor = NULL;
    //Assicurarsi che la parte dipendente dal driver di devmode sia aggiornata
    lFlag = DocumentProperties(NULL,print_handle,
    namePrinter,
    pInfo2->pDevMode,pInfo2->pDevMode,
    DM_OUT_BUFFER | DM_IN_BUFFER);
    if (lFlag != IDOK)
    {
    GlobalFree(pInfo2);
    ClosePrinter(print_handle);
    if (pDevMode)
    GlobalFree(pDevMode);
    return FALSE;
    }

  5. #5
    Utente di HTML.it
    Registrato dal
    Jan 2009
    Messaggi
    40
    la dm_Fields quando la interrogo ha il bit a zero
    la imposto a uno,chiamo la DocumentProperties ma all'uscita della funzione non e cambiato nulla.
    comunque grazie per le risposte.

    PRINTER_INFO_2 *pInfo2;
    DEVMODE *pDevMode = NULL;

    pInfo2->pDevMode = pDevMode;
    // Do not attempt to set security descriptor...
    pInfo2->pSecurityDescriptor = NULL;
    //Assicurarsi che la parte dipendente dal driver di devmode sia aggiornata
    lFlag = DocumentProperties(NULL,print_handle,
    namePrinter,
    pInfo2->pDevMode,pInfo2->pDevMode,
    DM_OUT_BUFFER | DM_IN_BUFFER);
    if (lFlag != IDOK)
    {
    GlobalFree(pInfo2);
    ClosePrinter(print_handle);
    if (pDevMode)
    GlobalFree(pDevMode);
    return FALSE;
    }

  6. #6
    Utente di HTML.it L'avatar di linoma
    Registrato dal
    Mar 2010
    Messaggi
    1,298
    Per gli Spartani e Sparta usa spartan

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2020 vBulletin Solutions, Inc. All rights reserved.