Visual Basic 6でこの問題を処理するには、Printer.TextWidth関数を使用し、Printer.ScaleWidthプロパティと比較する必要があります。DOS関数のように自動行折り返しは行われません。
プリンタが設定されているフォントがプリンタのフォントと正しく一致していることを確認します。これには、ドライバーに付属している「プリンター」フォントの1つを使用する必要がある場合があります。それ以外の場合は、固定スペースフォントであるCourierNewを使用してみてください。そうしないと、テキスト幅の値が幅を正しく報告しません。
別の方法は、Len文字列関数を使用して文字数をカウントし、89文字を超える場合は自分で切り捨てを処理することです。
のようなもの
Do Until LineToPrint = ""
TempD = Len(LineToPrint)
If TempD > 89 Then
Print Mid$(LineToPrint,1, 89)
LineToPrint = Right$(LineToPrint,TempD-89)
Else
Print LineToPrint
LineToPrint = ""
End If
Loop
再帰関数が好きなら、このように書くことができます
Private Sub PrintLine(ByVal LineToPrint As String, ByVal Width As Integer)
TempD = Len(LineToPrint)
If TempD > Width Then
Printer.Print Mid$(LineToPrint, 1, Width)
LineToPrint = Right$(LineToPrint, TempD - Width)
PrintLine LineToPrint, Width
Else
Printer.Print LineToPrint
End If
End Sub