Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Ajout For[mulaire] d'impression

2 réponses
Avatar
Sylvain
Bonjour,

je souhaite enregistrer des forms (ou formats d'impression
personnalisés) via AddForm (WinSpool.h) afin que ceux-ci apparaissent
dans la liste des formats de papier telle qu'affiché par PageSetupDlg.

or AddForm me renvoie tjrs 0 (erreur).

le handle d'imprimante est ouvert selon

HANDLE handle;
PRINTER_DEFAULTS defaults;
::memset(&defaults, 0, sizeof(defaults));
defaults.DesiredAccess = PRINTER_ALL_ACCESS;
::OpenPrinter(printerName, &handle, &defaults);
(le handle est ici correct)

l'ajout (avec 'name' le user name du format, width et height les
dimensions en mm) par:

FORM_INFO_1 form;
::memset(&form, 0, sizeof(form));
form.Flags = FORM_USER;
form.pName = (char*) name;
form.Size.cx = 100 * width;
form.Size.cy = 100 * height;
form.ImageableArea.right = 100 * width;
form.ImageableArea.bottom = 100 * height;
int result = ::AddForm(handle, 1, (byte*) &form);
(result me donne tjrs 0)


subsdidiarement, peux-t-on ajouter des formats directement via la clé
KLM/Software/MS/Windows
NT/CurrentVersion/Print/Printers/xx/DsDriver/printMediaSupported ?
(où xx est le nom de l'imprimante sur laquelle je veux utiliser ces formats)
j'aurais alors (dans le meilleur des cas) les noms dans la liste mais
pas les infos de taille, donc mon hDevMode ne sera surement pas mis à jour.

merci pour toute aide.
Sylvain.

2 réponses

Avatar
Christian ASTOR
Sylvain wrote:

int result = ::AddForm(handle, 1, (byte*) &form);
(result me donne tjrs 0)



Et que ramène GetLastError() ?
5 ?
Avatar
Sylvain
Christian ASTOR wrote on 03/10/2006 13:10:
Sylvain wrote:

int result = ::AddForm(handle, 1, (byte*) &form);
(result me donne tjrs 0)



Et que ramène GetLastError() ?
5 ?



non 80 (ERROR_FILE_EXISTS !?).

je suis bien sur en administrateur local sur la machine - un 2003 en
dev., XP pro en prod. avec utilisateur / adm. également.

l'ajout est fait sur une imprimante "pas toute jeune" (Epson LQ-580),
c'est peut être simplement son driver qui refuse cet ajout, mais je n'ai
pas pu m'en convaincre formellement.

Sylvain.