PictureFan の ver.0.37.0 を公開しました。
ダウンロードはいつもの場所からどうぞ。
詳しい更新内容もいつもの場所にあります。
今回の大きな変更点として、スクリプトを今までの WSH (Windows Script Host) から Python に変更しました。
PictureFan の印刷周りのコードを見直していて色々調べていたところ、MS のドキュメントに何やら知らないことが書いてあるのを見つけてしまいました。
Starting with Windows Vista, when you call PrintDlg or PrintDlgEx with PD_RETURNDC set to TRUE and PD_USEDEVMODECOPIESANDCOLLATE set to FALSE, the PrintDlg or PrintDlgEx function sets the number of copies in the nCopies member of the PRINTDLG structure, and it sets the number of copies in the structure represented by the hDC member of the PRINTDLG structure.
When making calls to GDI, you must ignore the value of nCopies, consider the value as 1, and use the returned hDC to avoid printing duplicate copies.
いつの間にかそんな変更されても困るんですけど…。
というわけで、Vista 以降は PD_USEDEVMODECOPIESANDCOLLATE を付けようが付けまいが、 PD_RETURNDC を使っている場合は nCopies とか PD_COLLATE は無視して、1回だけ描画すればいいということですね(ですよね?)。