<Return[D]><Top>

DocumentProperties

Declare Function Api_DocumentProperties& Lib "winspool.drv" Alias "DocumentPropertiesA" (ByVal hwnd&, ByVal hPrinter&, ByVal pDeviceName$, pDevModeOutput As DEVMODE, pDevModeInput As DEVMODE, ByVal fMode&)

Declare Function DocumentProperties Lib "winspool.drv" Alias "DocumentPropertiesA" (ByVal hwnd As Long, ByVal hPrinter As Long, ByVal pDeviceName As String, pDevModeOutput As DEVMODE, pDevModeInput As DEVMODE, ByVal fMode As Long) As Long

特定のプリンタのプリンタ初期化情報を取得または変更する。また、特定のプリンタのプリンタ設定プロパティシートを表示する。
Windows 95/98:この関数と PrinterProperties 関数はどちらも同じプロパティシートを表示する。このプロパティシートには、ドキュメントのプロパティとプリンタのプロパティを設定するためのページが含まれる。

パラメータ

hWnd
    [入力]プリンタ設定プロパティシートの親ウィンドウのハンドルを指定する。
hPrinter
    [入力]プリンタオブジェクトのハンドルを指定する。プリンタのハンドルは、OpenPrinter 関数または AddPrinter 関数を使って取得する。
pDeviceName
    [入力]プリンタ設定プロパティシートを表示するデバイス名を表す NULL で終わる文字列へのポインタを指定する。
pDevModeOutput
    [出力]ユーザーによって指定されるプリンタ設定データを格納する DEVMODE 構造体へのポインタを指定する。
pDevModeInput
    [入力]オペレーティングシステムがプロパティシートコントロールを初期化するのに使う DEVMODE 構造体へのポインタを指定する。
    このパラメータは、fMode パラメータで DE_IN_BUFFER フラグをセットするときのみ使う。DM_IN_BUFFER フラグをセットしない場合は、

    プリンタの既定の DEVMODE 構造体が使われる。
fMode
    [入力]この関数によって行う操作を指定する。

    このパラメータに 0 を指定すると、プリンタドライバの DEVMODE データ構造体に必要なバイト数が返る。

    それ以外のときは、次の定数の 1 つ以上を組み合わせて指定する。印刷を変更する場合は、入力値と出力値を少なくとも 1 つずつ指定し

    なければならない。

    値                              

意味                                                                                                                                  

    DM_IN_BUFFER

入力値である。プロンプト表示、コピー、更新の前に、プリンタドライバの現在の印刷設定と pDevModeInput パ

 

ラメータで指定した DEVMODE 構造体の設定とマージする。更新は、DEVMODE 構造体の dmFields メンバで

 

指定されているメンバについてのみ行われる。この値は DM_MODIFY としても定義されている。マージ中に競合

 

が発生した場合は、pDevModeInput で指定した DEVMODE 構造体の設定がプリンタドライバの現在の印刷設

 

定に優先する。

    DM_IN_PROMPT

入力値である。プリンタドライバの Print Setup プロパティシートを表示した後、ユーザーによって入力される値に従

 

ってプリンタの DEVMODE データ構造体の設定を変更する。この定数の代わりに DM_PROMPT を使うこともで

 

きる。

    DM_OUT_BUFFER

出力値である。pDevModeOutput パラメータで指定した DEVMODE データ構造体に、プライベートデータを含

 

め、プリンタドライバの現在の印刷設定を書き込む。書き込まれる情報を格納するのに十分なバッファサイズを割り

 

当てておかなければならない。DM_OUT_BUFFER ビットをクリアするときは、pDevModeOutput パラメータ

 

に NULL を指定できる。この定数の代わりに DM_COPY を使うこともできる。


戻り値
    fMode パラメータに 0 を指定すると、プリンタドライバの初期化情報を格納するのに十分なバッファサイズが返る。

    プリンタドライバが DEVMODE 構造体にプライベートデータを追加する場合は、このバッファサイズが DEVMODE 構造体よりも大きくなるの

    で注意する。
    この関数によってプロパティシートを表示した場合は、ユーザーが選択するボタンに応じて IDOK または IDCANCEL のどちらかが返る。
    プロパティシートを表示しない場合、関数が成功すると、IDOK が返る。
    関数が失敗すると、0 より小さい値が返ります。拡張エラー情報を取得するには、GetLastError 関数を使う。

解説
    pDeviceName パラメータで指定する文字列は、GetPrinter 関数を使って取得できる。
    注 プリンタドライバが実際に使う DEVMODE 構造体には、上記のようなドライバに依存しない部分の後ろにドライバ固有部分が含まれる。

         ドライバ固有部分のサイズと内容は、各ドライバとドライバのバージョンによって異なる。この部分がドライバによって異なるため、バッファ

         を割り当てる前に DEVMODE 構造体の正しいサイズをドライバに問い合わせることが非常に重要である。
    ローカルプリンタの設定を変更するには、次の手順に従う。
    1.fMode パラメータに 0 を指定して DocumentPropaties 関数を呼び出し、DEVMODE 構造体全体に必要な最大バイト数を取得する。
    2.DEVMODE 構造体全体のメモリを割り当てる。
    3.DocumentPropaties 関数を使って現在のプリンタ設定を取得する。このとき、2 で割り当てた DEVMODE 構造体へのポインタ

       を pDevModeOutput パラメータに指定し、DM_OUT_BUFFER を fMode パラメータに指定する。
    4.返された DEVMODE 構造体の該当するメンバを変更し、DEVMODE の dmFields メンバの対応するビットをセットして、どのメンバが変

       更になったのかを示す。
    5.DocumentProperties 関数を呼び出し、変更後の DEVMODE 構造体を pDevModeInput パラメータと pDevModeOutput パラメータとし

       て渡す。fMode パラメータに、DM_IN_BUFFER と DM_OUT_BUFFER を指定する( この 2 つの定数を OR 演算子で結合する)。
    DocumentProperties 関数を 3 回目に呼び出したときの DEVMODE 構造体は、CreateDC 関数を呼び出すときの引数として使える。
    現在のプリンタ設定を使っているプリンタデバイスコンテキストのハンドルを作成するには、上記の手順で DocumentPropaties 関数を 2 回だ

    け呼び出す。1 回目の呼び出しで DEVMODE 構造体全体のサイズを取得し、2 回目の呼び出しで、現在のプリンタ設定によって

    DEVMODE 構造体を初期化する。プリンタデバイスコンテキストへのハンドルを取得するには、初期化した DEVMODE 構造体を

    CreateDC 関数に渡す。