FORM_INFO_2 データ構造
Windows Vista では、印刷スプーラと Unidrv プリンター ドライバーが強化され、多言語環境でのプリンター フォームのサポートが向上しました。 スプーラーは、フォーム表示名の多言語ユーザー インターフェイス (MUI) 文字列と、MUI 文字列をサポートするために必要な追加情報を含む新しい FORM_INFO_2 データ構造をサポートします。
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 のドキュメントを参照してください。