ドキュメント名の設定          <TOP>


CreateDC 指定されたデバイスのデバイスコンテキストを、指定された名前で作成
DeleteDC 指定されたデバイスコンテキストを削除
Polygon 多角形の描画
StartDoc 印刷ジョブを開始
EndDoc 印刷ジョブを終了
StartPage プリンタドライバがデータを受け取る準備をさせる
EndPage 1ページ書き込みの終了を通知
GetDC ディスプレイデバイスコンテキストのハンドルを取得
ReleaseDC デバイスコンテキストを解放
 

左:起動時    中:設定したドキュメント名が表示される    右:印刷した状態

  

 

'================================================================
'= ドキュメント名の設定
'=    (DocName.bas)
'================================================================
#include "Windows.bi"

Type POINTAPI
    x As Long
    y As Long
End Type

Type DOCINFO
    cbSize       As Long
    lpszDocName  As Long
    lpszOutput   As Long
    lpszDatatype As Long
    fwType       As Long
End Type

' 指定されたデバイスのデバイスコンテキストを、指定された名前で作成
Declare Function Api_CreateDC& Lib "gdi32" Alias "CreateDCA" (ByVal lpDriverName$, lpDeviceName As Any, lpOutput As Any, ByVal lpInitData As Any)

' 指定されたデバイスコンテキストを削除
Declare Function Api_DeleteDC& Lib "gdi32" Alias "DeleteDC" (ByVal hDC&)

' 直線により接続された2つ以上の頂点から成っているポリゴンを引く
Declare Function Api_Polygon& Lib "gdi32" Alias "Polygon" (ByVal hDC&, lpPoint As Any, ByVal nCount&)

' 印刷ジョブを開始
Declare Function Api_StartDoc& Lib "gdi32" Alias "StartDocA" (ByVal hDC&, lpdi As DOCINFO)

' プリンタドライバがデータを受け取る準備をさせる
Declare Function Api_StartPage& Lib "gdi32" Alias "StartPage" (ByVal hDC&)

' 1ページ書き込みの終了を通知
Declare Function Api_EndPage& Lib "gdi32" Alias "EndPage" (ByVal hDC&)

' 印刷ジョブを終了
Declare Function Api_EndDoc& Lib "gdi32" Alias "EndDoc" (ByVal hDC&)

' 指定されたウィンドウのデバイスコンテキストのハンドルを取得
Declare Function Api_GetDC& Lib "user32" Alias "GetDC" (ByVal hWnd&)

' デバイスコンテキストを解放
Declare Function Api_ReleaseDC& Lib "user32" Alias "ReleaseDC" (ByVal hWnd&, ByVal hDC&)

Var Shared Button1 As Object

Button1.Attach GetDlgItem("Button1") : Button1.SetFontSize 14

Var Shared pa(4) As POINTAPI
Var Shared n As Integer

'================================================================
'=
'================================================================
Declare Sub Polygon_Set()
Sub Polygon_Set()
    pa(0).x = 110 * n
    pa(0).y = 20 * n
    pa(1).x = 45 * n
    pa(1).y = 65 * n
    pa(2).x = 75 * n
    pa(2).y = 135 * n
    pa(3).x = 145 * n
    pa(3).y = 135 * n
    pa(4).x = 175 * n
    pa(4).y = 65 * n
End Sub

'================================================================
'=
'================================================================
Declare Sub MainForm_Start edecl ()
Sub MainForm_Start()
    Var hDC As Long
    Var Ret As Long

    hDC = Api_GetDC(GethWnd)

    n = 1
    Polygon_Set
    Ret = Api_Polygon(hDC, pa(0), 5)

    Ret = Api_ReleaseDC(GethWnd, hDC)
End Sub

'================================================================
'=
'================================================================
Declare Sub Button1_on edecl ()
Sub Button1_on()
    Var PrinterDC As Long
    Var di As DOCINFO
    Var Ret As Long

    di.cbSize = Len(di)
    di.lpszDocName = StrAdr("API-Guide Code Demonstration" & Chr$(0))
    di.lpszOutput = StrAdr(Chr$(0))
    di.lpszDatatype = StrAdr(Chr$(0))

    PrinterDC = Api_CreateDC(ByVal 0, "pdfFactory Pro", Chr$(0), ByVal 0)

    Ret = Api_StartDoc(PrinterDC, di)
    Ret = Api_StartPage(PrinterDC)

    n = 10
    Polygon_Set
    Ret = Api_Polygon(PrinterDC, pa(0), 5)

    Ret = Api_EndPage(PrinterDC)
    Ret = Api_EndDoc(PrinterDC)

    Ret = Api_DeleteDC(hDC)
End Sub

'================================================================
'=
'================================================================
While 1
    WaitEvent
Wend
Stop
End