Compartir a través de


Adición de formularios a la base de datos de formularios

Importante

La plataforma de impresión moderna es el medio preferido de Windows para comunicarse con impresoras. Se recomienda usar el controlador de clase de bandeja de entrada IPP de Microsoft, junto con aplicaciones de soporte técnico de impresión (PSA), para personalizar la experiencia de impresión en Windows 10 y 11 para el desarrollo de dispositivos de impresora.

Para obtener más información, consulte Plataforma de impresión moderna y la Guía de diseño de aplicaciones para compatibilidad con impresión.

Si la impresora admite formularios adicionales, puede agregarlos al controlador de impresora Unidrv describiéndolos en el archivo GPD para el controlador de impresora. Si usa un identificador de recurso con el campo *rcNameId y un archivo DLL de recursos para la cadena de nombre para mostrar del formulario, el controlador usará automáticamente las nuevas características de mejoras de localización que proporciona el controlador de impresora Unidrv de Windows Vista. Los complementos de controlador de impresora Unidrv también se benefician de estos cambios en el administrador de trabajos de impresión automáticamente y no requieren modificaciones adicionales. Para obtener más información sobre estas mejoras, consulte Cambios en formularios de impresora en Windows Vista.

Si no usa un archivo DLL de recursos para las cadenas localizables en el archivo GPD, debe quitar las cadenas localizables, almacenarlas en un archivo DLL de recursos y reemplazar las cadenas por el identificador de recurso correspondiente en el archivo GPD.

El ejemplo de código siguiente es un extracto de un archivo GPD que usa un identificador de recurso para el nombre para mostrar.

*Feature: PaperSize
{
    *Option: Option2
    {
 *rcNameID: 259
        (form definition)
    }
    (other form definitions).
}

Dentro del controlador de impresora Unidrv que se proporciona con Windows Vista, la estructura FORM_INFO_2 se rellena mediante datos que se leen desde el archivo GPD, como se muestra en la tabla siguiente. Si el archivo GPD de la impresora ya contiene la información necesaria para rellenar esta estructura, no es necesario cambiar nada para usar las nuevas características que proporciona el controlador de impresora Unidrv de Windows Vista.

typedef struct _FORM_INFO_2 { 
  DWORD    Flags; 
  LPTSTR   pName; 
  SIZEL    Size; 
  RECTL    ImageableArea;
  LPCSTR   pKeyword;
  DWORD    StringType;
  LPCTSTR  pMuiDll;
  DWORD    dwResourceId;
  LPCTSTR  pDisplayName;
  LANGID   wLangId; 
} FORM_INFO_2, *PFORM_INFO_2;
Campo FORM_INFO_2 Valor GPD usado Descripción del campo
Flags FORM_PRINTER

El controlador de impresora Unidrv asigna este valor porque agrega el formulario. No se usa un valor del archivo GPD para este campo.
Propiedades de la estructura.
pName Nombre localizado del formulario tal y como se obtiene del archivo DLL del recurso o del campo *rcName en el archivo GPD. Puntero a una cadena terminada en null que especifica el nombre del formulario. Esta cadena se usa para identificar el formulario en la base de datos de formularios y debe ser único.
Size Información de tamaño que se lee de la opción *PageDimensions en el archivo GPD. Ancho y alto, en milésimas de milímetros, del formulario.
ImageableArea Información de tamaño que se lee de la opción *PrintableArea en el archivo GPD. Ancho y alto, en milésimas de milímetros, del área de la página en la que puede imprimir la impresora.
pKeyword Valor de la entrada *Option en el archivo GPD. Puntero a un identificador de cadena no localizable del formulario. Cuando se pasa a AddForm o SetForm, este puntero proporciona al llamador una manera de identificar el formulario en todas las configuraciones regionales.
StringType STRING_MUIDLL

Si el GPD usa la opción *rcNameId y el nombre del formulario está disponible en el archivo DLL del recurso, se asigna el valor STRING_MUIDLL. Si en su lugar se usa la opción *rcName en el archivo GPD, el valor de este campo es STRING_NONE. No se usa un valor del archivo GPD para este campo.
Especifica cómo se obtiene un nombre para mostrar localizado para el formulario en tiempo de ejecución.
pMuiDll Valor de la entrada *ResourceDLL en el archivo GPD si se usa la opción *rcNameId. Si en su lugar se usa la opción *rcName en el archivo GPD, el valor de este campo es NULL. El DLL de recursos localizados de MUI que contiene el nombre para mostrar localizado cuando StringType contiene STRING_MUIDLL.
dwResourceId Valor de la entrada *rcNameID en el archivo GPD. Si en su lugar se usa la opción *rcName en el archivo GPD, el valor de este campo es 0. El identificador de recurso, en pMuiDll, del nombre para mostrar del formulario cuando StringType contiene STRING_MUIDLL.
pDisplayName NULL

Este campo no se usa.
El nombre para mostrar del formulario en el idioma que wLangId especifica cuando StringType contiene STRING_LANGPAIR.
wLangId 0

Este campo no se usa.
Idioma de pDisplayName cuando StringType contiene STRING_LANGPAIR.