Compartir a través de


Estructura de datos de FORM_INFO_2

La cola de impresión y el controlador de impresora Unidrv se mejoran en Windows Vista para proporcionar un mejor soporte de formularios de impresora en entornos de varios lenguajes. El administrador de trabajos admite cadenas de interfaz de usuario (MUI) de varios idiomas para los nombres para mostrar del formulario y la nueva estructura de datos FORM_INFO_2 para incluir la información adicional que necesita para admitir las cadenas MUI.

La estructura de datos FORM_INFO_1 se define de la siguiente manera.

typedef struct _FORM_INFO_1 { 
  DWORD  Flags; 
  LPTSTR  pName; 
  SIZEL   Size; 
  RECTL   ImageableArea; 
} FORM_INFO_1, *PFORM_INFO_1;

En FORM_INFO_1, el miembro pName es el único campo de cadena, por lo que puede usarlo para crear el nombre de clave que usan las rutinas de búsqueda internas para buscar formularios en la base de datos interna y también como el nombre para mostrar que se muestra a los usuarios finales.

La estructura FORM_INFO_2, que se define en el ejemplo de código siguiente, agrega campos adicionales para proporcionar compatibilidad con MUI.

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;

FORM_INFO_2 agrega el miembro pKeyword para habilitar la adición de una palabra clave distinta, una que puede ser diferente del nombre para mostrar.

Esta estructura también permite agregar el archivo DLL de recursos y el identificador de recurso a la base de datos de formularios mediante el miembro pMuiDll y dwResourceId. Cuando el miembro StringType tiene el valor de STRING_MUIDLL y los miembros pMuiDll y dwResourceId contienen el archivo DLL de recursos y el identificador del nombre para mostrar, la función AddForm en el administrador de colas busca el nombre para mostrar en el archivo DLL y lo registra internamente. Cuando se llama a la función GetForm o EnumForms con un valor level de 2, la información que se devuelve en la estructura FORM_INFO_2 contendrá el nombre para mostrar al que hace referencia pDisplayName y el identificador de idioma correspondiente en wLangID.

Los controladores de impresora que siguen usando la estructura FORM_INFO_1 cuando llaman a AddForm almacenarán solo la información que se encuentra en esa estructura en la base de datos de formularios. Los miembros de la estructura FORM_INFO_2 que no se encuentran en la estructura de FORM_INFO_1 serán NULL o 0 cuando se consulte mediante una llamada a GetForm o EnumForms que devuelva una estructura FORM_INFO_2.

Para obtener más información sobre cómo agregar formularios de impresora y sobre el uso de las estructuras de datos de FORM_INFO_1 y FORM_INFO_2, consulte la documentación de Microsoft Windows SDK.