この特集のトップページへ
Chapter 7:プレゼンテーション層の構築

7.4.7 顧客情報の印刷処理
●Win32APIを使ってユーザーにプリンタを選択させる

DEVNAMES構造体
 DEVNAMES構造体は,プリンタのデバイスドライバ名や出力ポート名などを設定する構造体である。この構造体は,Table 7-20のように定義される。

Table 7-20 DEVNAMES構造体

【定義】

Public Type DEVNAMES
    wDriverOffset As Integer
    wDeviceOffset As Integer
    wOutputOffset As Integer
    wDefault As Integer
    extData As String * 256
End Type

【各メンバの意味】

メンバ解説
wDriverOffsetこの構造体の先頭から数えて何バイト目がデバイスドライバ名を示すかというオフセット値。デバイスドライバ名はPrinterオブジェクトのDriverNameプロパティに対応する
wDeviceOffsetこの構造体の先頭から数えて何バイト目がデバイス名を示すかというオフセット値。デバイス名はPrinterオブジェクトのDeviceNameプロパティに対応する
wOutputOffsetこの構造体の先頭から数えて何バイト目が出力ポート名を示すかというオフセット値。出力ポート名はPrinterオブジェクトのPortプロパティに対応する
wDefaultこの構造体の先頭から数えて何バイト目がプリンタの識別情報になるのかの設定。通常は0を指定する
extDataここに,デバイスドライバ名,デバイス名,ポート名などを格納する。【定義】においては“extData As String * 256”として256文字分のエリアを用意したが,実際には何文字分でもかまわない

 DEVNAMES構造体は,デバイスドライバ名,デバイス名,出力ポート名を,バイト位置として設定するようにしているため,ややわかりづらくなっている。DEVNAMES構造体は図示すると,Fig.7-65のような構造を想定している。

Fig.7-65 DEVNAMES構造体の構造
fig7_65

 現在のPrinterオブジェクトが指すプリンタをDEVNAMES構造体に格納するには,List 7-55のようにすればよい。

 List 7-55では,vDevNamesという名前のDEVNAMES構造体を示す変数を用意し,そこにPrinterオブジェクトが示すプリンタのデバイスドライバ名,デバイス名,出力ポート名をそれぞれ格納するという処理をしている。

Prev 61/134 Next