VB6.0用掲示板の過去のログ(No.1)−VBレスキュー(花ちゃん)
[記事リスト] [新規投稿] [新着記事] [ワード検索] [過去ログ] [管理用]

投稿日: 2002/09/17(Tue) 17:50
投稿者Yuuko
Eメール
URL
タイトルRe: APIによる印刷

早々にご返答 ありがとうございました。

>どうせGDIを使うならVB.NETに移行した方が楽かも…しれません
ユーザーさんの指定なもので・・(^^;

提示いただいたキーワードで いくつか参考になりそうな 
ところが見つかりましたので がんばってみましたが・・。

下記のようなソースを組んでみたのですが印刷出来ません。
プリンタージョブは現れて消えるのですが
用紙さえも出てこないのです。


'----------------------------------------
'宣言部
'----------------------------------------

' StartDocPrinterに必要な構造体
Private Type DOC_INFO_1
   pDocName As String
   pOutputFile As String
   pDatatype As String
End Type

Private Declare Function OpenPrinter Lib "winspool.drv" _
                 Alias "OpenPrinterA" _
                (ByVal pPrinterName As String, phPrinter As Long, _
                 pDefault As Any) As Long
Private Declare Function StartDocPrinter Lib "winspool.drv" _
                 Alias "StartDocPrinterA" _
                (ByVal hPrinter As Long, ByVal Level As Long, _
                 pDocInfo As DOC_INFO_1) As Long
Private Declare Function StartPagePrinter Lib "winspool.drv" (ByVal hPrinter As Long) As Long
Private Declare Function WritePrinter Lib "winspool.drv" _
                (ByVal hPrinter As Long, pBuf As Any, ByVal cdBuf As Long, pcWritten As Long) As Long
Private Declare Function EndPagePrinter Lib "winspool.drv" (ByVal hPrinter As Long) As Long
Private Declare Function EndDocPrinter Lib "winspool.drv" (ByVal hPrinter As Long) As Long
Private Declare Function ClosePrinter Lib "winspool.drv" (ByVal hPrinter As Long) As Long

'----------------------------------------
Private Type POINTAPI
    x As Long
    y As Long
End Type

Private Declare Function LineTo Lib "gdi32" (ByVal hdc As Long, ByVal x As Long, ByVal y As Long) As Long
Private Declare Function MoveToEx Lib "gdi32" (ByVal hdc As Long, ByVal x As Long, ByVal y As Long, lpPoint As POINTAPI) As Long
Private Declare Function TextOut Lib "gdi32" Alias "TextOutA" (ByVal hdc As Long, ByVal nXStart As Long, ByVal nYStart As Long, ByVal lpString As String, ByVal cbString As Long) As Boolean


'----------------------------------------
'実行部
'----------------------------------------
Private Sub Command3_Click()
    Dim x1 As Double
    Dim y1 As Double
    Dim x2 As Double
    Dim y2 As Double
    
    Dim OldCurrentPos   As POINTAPI     '古いカレントポジションが格納される
    Dim hPrinter        As Long
    Dim di              As DOC_INFO_1
    
    Dim TmpS            As String
    Dim RetC            As Long

    di.pDocName = App.Title
    di.pOutputFile = vbNullString
    di.pDatatype = "RAW"

    'プリンターオープン          
    Call OpenPrinter("レーザー", hPrinter, vbNullString)
    Call StartDocPrinter(hPrinter, 1, di)
    Call StartPagePrinter(hPrinter)

    '線を書いてみる
    x1 = 10
    y1 = 15
    x2 = 190
    y2 = 180
    RetC = MoveToEx(hPrinter, x1, y1, OldCurrentPos)  
    RetC = LineTo(hPrinter, x2, y2)

    '文字を書いてみる
    TmpS = "なんたらかんたら"
    RetC = TextOut(hPrinter, x1, y1, TmpS, LenB(StrConv(TmpS, vbFromUnicode)))

    '終了        
    Call EndPagePrinter(hPrinter)
    Call EndDocPrinter(hPrinter)
    Call ClosePrinter(hPrinter)


End Sub


- 関連一覧ツリー (★ をクリックするとツリー全体を一括表示します)

- 返信フォーム (この記事に返信する場合は下記フォームから投稿して下さい)

- Web Forum -