Printerオブジェクトを使用してUnicode文字を印刷するには?

解決


たかっさん  2008-07-11 18:58:23  No: 100886  IP: 192.*.*.*

VB6.0で中国語の文字を印刷したいのですが、
普通に印刷すると特有文字は"?"に化けてしまいます。

過去ログでもあったのですが、UnicodeをTextoutWのAPIを
使用して印刷しようとしています。

Private Declare Function TextOutW Lib "GDI32.DLL" (ByVal hDC As Long, _
    ByVal nXStart As Long, ByVal nYStart As Long, lpString As Byte, _
    ByVal cbString As Long) As Long

Function TextOut (obj As Object, x As Long, y As Long, s As String) As Long
    Dim b() As Byte
    b = s
    TextOut = TextOutW(obj.hDC, x, y, b(0), Len(s))
End Function

で印刷を実行しています。

1.objをピクチャボックスに割り当てると表示されるのですが
Printerにすると、Enddocしても印刷が実行されません。
苦肉の策で、最初にNEWPAGEをいれると印刷されるのですが
白紙1枚とUnicode変換されたのが1枚と2枚印刷されてしまいます。
TextoutWを使用せずPrinter.Printを使用すれば
正常に印刷されます。
印刷できない理由があるのでしょうか?

プリンター接続はTCP/IP接続です。

2. プリンタ ピクチャボックスを共に".ScaleMode=6(ミリ単位)"に
しているんですが表示、印刷すると、文字ピッチが全く異なるのですが
何か間違っているのでしょうか?

初心者で変な質問で申し訳ありません。
ご教授よろしくお願いします。

編集 削除
K.J.K.  2008-07-12 11:31:11  No: 100887  IP: 192.*.*.*

TextOut する前に、 該当する Printer オブジェクトで、
Printer.Print " "
とかするとどうなります?

まぁ、VB6の Printer オブジェクトにはいろいろ問題がありますので、
難しいところではあります。
http://support.microsoft.com/kb/412851/ja

編集 削除
たかっさん  2008-07-14 21:35:20  No: 100888  IP: 192.*.*.*

K.J.Kさんありがとうございます。

Printer.Print""で印字することが出来ました。
お手数おかけしました。

編集 削除