Windows Vista では、印刷スプーラーと Unidrv プリンター ドライバーが強化され、多言語環境でより適切なサポート プリンター フォームが提供されます。 スプーラーは、フォーム表示名と新しいFORM_INFO_2データ構造の多言語ユーザー インターフェイス (MUI) 文字列をサポートし、MUI 文字列をサポートするために必要な追加情報を含めます。
FORM_INFO_1データ構造は次のように定義されます。
typedef struct _FORM_INFO_1 {
DWORD Flags;
LPTSTR pName;
SIZEL Size;
RECTL ImageableArea;
} FORM_INFO_1, *PFORM_INFO_1;
FORM_INFO_1では、pName メンバーが唯一の文字列フィールドであるため、内部検索ルーチンが内部データベース内のフォームの検索に使用するキー名を作成したり、エンド ユーザーに表示される表示名として使用したりできます。
次のコード例で定義されているFORM_INFO_2構造体は、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 pKeyword メンバーを追加して、表示名とは異なる個別のキーワードを追加できるようにします。
この構造体を使用すると、pMuiDll メンバーと dwResourceId メンバーを使用して、リソース DLL とリソース ID をフォーム データベースに追加することもできます。 StringType メンバーに STRING_MUIDLL の値があり、pMuiDll メンバーと dwResourceId メンバーに表示名のリソース DLL と識別子が含まれている場合、スプーラーの AddForm 関数は DLL 内の表示名を検索し、内部的に記録します。 GetForm または EnumForms 関数が Level 値 2 で呼び出されると、FORM_INFO_2構造体で返される情報には、pDisplayName が参照する表示名と wLangID の対応する言語 ID が含まれます。
AddForm を呼び出すときにFORM_INFO_1構造体を引き続き使用するプリンター ドライバーは、フォーム データベース内のその構造体にある情報のみを格納します。 FORM_INFO_1構造体に見つからないFORM_INFO_2構造体のメンバーは、FORM_INFO_2構造体を返す GetForm または EnumForms の呼び出しによってクエリを実行すると、null または 0 されます。
プリンター フォームの追加と、FORM_INFO_1およびFORM_INFO_2データ構造の使用の詳細については、Microsoft Windows SDK のドキュメントを参照してください。