PB 電子会議室
発言No. | 更新日 | 題名(クリックすると発言内容と関連するコメントが表示されます) |
---|---|---|
21706 | 05/01/19 14:38:45 | RE(5):データウィンドウの印刷をAPI関数で処理したいのですが・・・ By m-yago |
21702 | 05/01/17 10:25:17 | RE(4):データウィンドウの印刷をAPI関数で処理したいのですが・・・ By にしやん |
21701 | 05/01/17 10:24:41 | RE(3):データウィンドウの印刷をAPI関数で処理したいのですが・・・ By にしやん |
21698 | 05/01/14 17:56:30 | RE(2):データウィンドウの印刷をAPI関数で処理したいのですが・・・ By m-yago |
21670 | 04/12/27 10:51:55 | RE(1):データウィンドウの印刷をAPI関数で処理したいのですが・・・ By PS |
カテゴリ:
日付:2005年01月17日 10:24 発信者:にしやん
題名:RE(3):データウィンドウの印刷をAPI関数で処理したいのですが・・・
m-yagoさん、こんにちは。
>調査したところ、印刷対象(DataWindow)のポインタらしきものは取れそうでした。
必要なのは DataWindow のポインタではなく、印刷データのポインタではないのですか?
WritePrinter の第2引数ですよね。この引数は実際にプリンタに送信する
データ(コマンド)のポインタであり、DataWindow のポインタではありません。
この印刷データは、プリンタの機種ごとにその形式が異なります。
#PostScript プリンタは、機種に関わらず共通の印刷データ形式(PostScript形式)です
DataWindow の印刷データを作成するには、Print 関数で印刷データを一時ファイルに出力し、
そのファイルデータを読み込む以外に無いと思います。
具体的には、データウィンドウオブジェクトの \"DataWindow.Print.Filename\" プロパティに
一時ファイルの名前を指定して Print 関数を呼び出し、FileOpen → FileRead で
そのファイルの内容を Blob 型変数に読み込むことになります。
外部関数宣言では、REF Blob … として宣言しておくとよいでしょう。
一時ファイルは、印刷完了後に削除することになるでしょう。
印刷先プリンタの指定は Print 関数の前に行っておく必要があります。
#プリンタに送信されるべきデータを一旦ファイルに出力し、後で API を使って
#そのデータをプリンタに送信するわけで、二度手間であり無意味だと思いますが…
--
DOC_INFO_1 構造体は、winspool.h の内容を元にして作成できます。
String pDocName
String pOutputFile
String pDataType
こんな感じでしょうか?
#NULL ポインタを渡す構造体メンバは、
#String ではなく Long か UnsignedLong で宣言して 0 をセットするのも可
…で、StartDocPrinter にポインタ渡しするので、外部関数宣言時は
REF DOC_INFO_1 … などとすればできます。
#REF Structure … でも可
FUNCTION UnsignedLong StartDocPrinter(UnsignedLong hPrinter, UnsignedLong Level, &
REF DOC_INFO_1 pDocInfo) LIBRARY \"WINSPOOL.DRV\" ALIAS FOR \"StartDocPrinterA\"
こんな感じでしょうか?
付加情報:
PowerBuilder Version (記載なし)
Client SoftWare
OS (記載なし)
DBMS (記載なし)
Browser (記載なし)
Server SoftWare
OS (記載なし)
DBMS (記載なし)
WebServer (記載なし)
Copyright © 2013 Power Future Co., Ltd.