この特集のトップページへ
>
Chapter 7:プレゼンテーション層の構築
7.4.7 顧客情報の印刷処理
●Win32APIを使ってユーザーにプリンタを選択させる
DEVNAMES構造体は,プリンタのデバイスドライバ名や出力ポート名などを設定する構造体である。この構造体は,Table 7-20のように定義される。
Table 7-20 DEVNAMES構造体
【定義】
|
【各メンバの意味】
| メンバ | 解説 |
|---|---|
| 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構造体の構造

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