StartPagePrinter

StartPagePrinterで、印刷するページの開始を通知する。

StartPagePrinter function (Winspool.h) - Win32 apps | Microsoft Docs

test_text.txtを、

2ページ分の量に増やした
2ページ分の量に増やした

2ページ分の量に増やした。
しかし、複数ページある場合、ページごとに複数回呼び出すのかと思いきや、試行錯誤した結果、複数ページ印刷でもWritePrinterの前に1回呼び出すだけで印刷できてしまった。

StartPagePrinterの後に、MessageBoxを挟んで、キューの状態を見ることにした。

メッセージボックスを表示
メッセージボックスを表示

メッセージボックスを表示して止める。

スプール中
スプール中

スプール中。

印刷中になる
印刷中になる

そこを抜けると、印刷中になる。

C:\Users\bg1\Documents\test>StartPagePrinter.exe
tszModulePath = C:\Users\bg1\Documents\test\test_text.txt
dwFileSize = 8562
Default Printer: EPSON PX-S06 Series
hPrinter = 0x004faaac
dwJob = 33
dwFileSize = 8562
dwWritten = 8562

C:\Users\bg1\Documents\test>

WritePrinterで、2ページ分バイナリデータを送ると、ページごとに分割されるわけではなく、まるまる書き込み成功となる。
なので2ページでもStartPagePrinterは1回で良さそう。
(今のところの設定とやり方では。)

2ページ印刷されてる
2ページ印刷されてる

2ページ印刷されてる。
いろいろネットでも調べたけど、複数ページ印刷で、StartPagePrinterをループで繰り返してる例は見当たらなかった。

Sample/winapi/StartPagePrinter/StartPagePrinter/src/StartPagePrinter at master · bg1bgst333/Sample · GitHub