Printer()->GetPrinter( p_name, p_drv, p_port, devm );
dmw = (TDevMode *)GlobalLock( ( HGLOBAL )devm );
dmw->dmOrientation = DMORIENT_PORTRAIT;
dmw->dmPaperLength = 2670;
dmw->dmPaperWidth = 1950;
dmw->dmPaperSize = 0;
GlobalUnlock( ( HGLOBAL )devm );
Printer()->SetPrinter( p_name, p_drv, p_port, devm );
の様にして用紙サイズを明示的に与えているにもかかわらず、ドットプリンタが指定した用紙長分の紙送りをしてくれず、連続で印刷するとどんどん印刷位置が(縦方向)ずれてしまいます。
おそらく用紙サイズが適切に設定できていないと思うのですが、どうすれば適切にサイズが設定されるようになるのでしょうか?
あまり印刷には詳しくありませんが。
指定は間違っていないと思いますが。
改ページでずれているように思います。
スタート→プリンターとFAXを選択して
メニュ→サーバーのプロパティーで
用紙でその用紙のサイズを指定してプリンターに
割り当て。
又は、
プリンターのプリパティーの印刷設定で
使用する用紙のサイズを作成してプリンターに
割り当て。
印刷用紙を規定値を設定した状態で印刷して
みてください。
印刷に関する注意
連続帳票用紙に印刷するためには、その用紙の改ページ幅を
設定できるプリンタドライバが必要です
上の例ではDEVMODEの初期化として
"dmFields"の内容はどうなっていますか?
DM_PAPERSIZE
DM_PAPERLENGTH
DM_PAPERWIDTH
のフラグはオンですか?
一度DEVMODEの全内容を確認してみてください。
dmFields
dmColor
dmDuplex
dmYResolution
dmTTOption
dmTTOption
http://msdn.microsoft.com/library/default.asp?url=/library/e...
http://www.microsoft.com/JAPAN/developer/library/vcmfc/_mfc_...
dmFieldsの存在に気づいていなかったですね…。以上3つのビットを立てればよいのでしょうか?
回答ありがとうございます。プリンタの方で用紙サイズを指定しても、印刷結果には反映されないようです。ちなみに、QuickReportで用紙サイズを変更すると、その用紙サイズに従った紙送りがされるのですが、任意サイズを指定すると、指定したサイズではない長さで紙送りされてしまいます。