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

投稿日: 2003/02/26(Wed) 22:25
投稿者Starfish
Eメール
URL
タイトルRe: 印刷時の余白サイズ(下と左側)

ここのサンプルに右と下の印字不可能の領域のサイズを求める処理を追加してみました。
ついでに、スケールの変換は即値を使わないようにしてみました。

Private Declare Function GetDeviceCaps Lib "gdi32" _
    (ByVal hdc As Long, ByVal nIndex As Long) As Long

Private Const PHYSICALHEIGHT = 111  '物理的高さ
Private Const PHYSICALWIDTH = 110   '物理的幅
Private Const PHYSICALOFFSETX = 112 '印刷可能なX方向のマージン
Private Const PHYSICALOFFSETY = 113 '印刷可能なY方向のマージン
Private Sub Command1_Click()
    Dim LeftMargin As Long
    Dim TopMargin As Long
    Dim PhysHeight As Long
    Dim PhysWidth As Long
    Dim RightMargin As Long
    Dim BottomMargin As Long
    
    'マージンをピクセル単位で取得しそれをmmに変換
    LeftMargin = Printer.ScaleX(GetDeviceCaps(Printer.hdc, PHYSICALOFFSETX) _
                    , vbPixels, vbMillimeters)
    TopMargin = Printer.ScaleY(GetDeviceCaps(Printer.hdc, PHYSICALOFFSETY) _
                    , vbPixels, vbMillimeters)
    PhysWidth = Printer.ScaleX(GetDeviceCaps(Printer.hdc, PHYSICALWIDTH) _
                    , vbPixels, vbMillimeters)
    PhysHeight = Printer.ScaleY(GetDeviceCaps(Printer.hdc, PHYSICALHEIGHT) _
                    , vbPixels, vbMillimeters)
    RightMargin = PhysWidth - LeftMargin - _
                    Printer.ScaleX(Printer.ScaleWidth, vbTwips, vbMillimeters)
    BottomMargin = PhysHeight - TopMargin - _
                    Printer.ScaleY(Printer.ScaleHeight, vbTwips, vbMillimeters)


    Label1.Caption = "プリンター用紙印刷余白(左) :  " & LeftMargin & " mm"
    Label2.Caption = "プリンター用紙印刷余白(上) :  " & TopMargin & " mm"
    Label3.Caption = "プリンター用紙サイズ(幅)   : " & PhysWidth & " mm"
    Label4.Caption = "プリンター用紙サイズ(高さ) : " & PhysHeight & " mm"
    Label5.Caption = "プリンター用紙印刷余白(右) :  " & RightMargin & " mm"
    Label6.Caption = "プリンター用紙印刷余白(下) :  " & BottomMargin & " mm"


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

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

- Web Forum -