フォーム データベースにフォームを追加する
重要
Windows でプリンターとの通信手段として推奨されるのは、最新の印刷プラットフォームです。 プリンターデバイス開発におけるWindows 10および11での印刷体験をカスタマイズするために、MicrosoftのIPPインボックスクラスドライバーとPrint Support Apps (PSA)の使用を推奨します。
詳細については、最新の印刷プラットフォームに関する記事および「印刷サポート アプリの設計ガイド」を参照してください 。
プリンターが追加のフォームをサポートしている場合は、プリンター ドライバーの GPD ファイルで説明することで、Unidrv プリンター ドライバーに追加できます。 *rcNameId フィールドにリソース ID を使用し、フォーム表示名文字列にリソース DLL を使用すると、ドライバーは Windows Vista Unidrv プリンター ドライバーが提供する新しいローカライズ拡張機能機能を自動的に使用します。 Unidrv プリンター ドライバー プラグインも、スプーラーへのこれらの変更から自動的に恩恵を受け、追加の変更を必要としません。 これらの機能強化の詳細については、「Windows Vista でのプリンター フォームの変更」をご参照ください。
GPD ファイル内のローカライズ可能な文字列にリソース DLL を使用していない場合は、ローカライズ可能な文字列を削除し、リソース DLL に格納し、文字列を GPD ファイル内の対応するリソース ID に置き換える必要があります。
次のコード例は、表示名にリソース ID を使用する GPD ファイルからの抜粋です。
*Feature: PaperSize
{
*Option: Option2
{
*rcNameID: 259
(form definition)
}
(other form definitions).
}
Windows Vista で提供される Unidrv プリンター ドライバー内では、次の表に示すように、GPD ファイルから読み取られたデータによって FORM_INFO_2 構造体が設定されます。 プリンターの GPD ファイルに、この構造体を入力するために必要な情報がすでに含まれている場合は、Windows Vista Unidrv プリンター ドライバーが提供する新機能を使用するために何も変更する必要はありません。
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 フィールド | 使用される GPD 値 | フィールドの説明 |
---|---|---|
Flags | FORM_PRINTER この値は、フォームを追加するため、Unidrv プリンター ドライバーによって割り当てられます。 GPD ファイルの値は、このフィールドには使用されません。 |
構造のプロパティ。 |
pName | リソース DLL または GPD ファイルの *rcName フィールドから取得した、フォームのローカライズされた名前。 | フォーム名を指定する、null で終わる文字列へのポインター。 この文字列は、フォーム データベース内のフォームを識別するために使用され、一意である必要があります。 |
サイズ | GPD ファイルの *PageDimensions オプションから読み取られたサイズ情報。 | フォームの幅と高さは、ミリの 1000 分の 1。 |
ImageableArea | GPD ファイルの *PrintableArea オプションから読み取られたサイズ情報。 | プリンターが印刷できるページの領域の幅と高さは、ミリの 1000 分の 1。 |
pKeyword | GPD ファイル内の *Option エントリの値。 | フォームのローカライズできない文字列識別子へのポインター。 AddForm または SetForm に渡されると、このポインターは呼び出し元にすべてのロケールでフォームを識別する方法を提供します。 |
StringType | STRING_MUIDLL GPD で *rcNameId オプションが使用され、フォーム名がリソース DLL から使用できる場合は、STRING_MUIDLL 値が割り当てられます。 代わりに 、GPD ファイルで *rcName オプションを使用する場合、このフィールドの値は STRING_NONE。 GPD ファイルの値は、このフィールドには使用されません。 |
実行時にフォームのローカライズされた表示名を取得する方法を指定します。 |
pMuiDll | *rcNameId オプションが使用されている場合の GPD ファイル内の *ResourceDLL 項目の値。 GPD ファイルで *rcName オプションが代わりに使われている場合、このフィールドの値は NULL となります。 | StringType に STRING_MUIDLL が含まれている場合にローカライズされた表示名を含む MUI ローカライズされたリソース DLL。 |
dwResourceId | GPD ファイル内の *rcNameID エントリの値。 GPD ファイルで *rcName オプションが代わりに使われている場合、このフィールドの値は 0 となります。 | StringType に STRING_MUIDLL が含まれている場合のフォームの表示名のリソース ID (pMuiDll)。 |
pDisplayName | NULL このフィールドは使用されません。 |
StringType に STRING_LANGPAIR が含まれている場合に wLangId が指定する言語でのフォームの表示名。 |
wLangId | 0 このフィールドは使用されません。 |
StringType に STRING_LANGPAIR が含まれている場合の pDisplayName の言語。 |