2019年4月22日月曜日

PictureFan ver.0.38.0 を公開

PictureFan の ver.0.38.0 を公開しました。
ダウンロードはこちらからできます。
更新内容はこちらです。

新しいバージョンはもう少し先の公開を考えていましたが、ver.0.37.0 に一括変換で必ずクラッシュする致命的な不具合があったため、取り急ぎ公開しました。
今回の主な機能追加としては、ランチャーバーの大幅な強化と、テキスト書式の大幅な強化が挙げられます。

2019年4月1日月曜日

サイト移転

Yahoo!ジオシティーズが3月31日をもって終了したため、サイトを移転しました。
新しいアドレスは http://iooiau.net/ です。

基本的に今までのリンクは http://www.geocities.jp/iooiau/ のところを http://iooiau.net/ に置き換えて頂ければアクセスできるはずです。

2019年2月25日月曜日

PictureFan ver.0.37.0 を公開

PictureFan の ver.0.37.0 を公開しました。
ダウンロードはいつもの場所からどうぞ。
詳しい更新内容もいつもの場所にあります。

今回の大きな変更点として、スクリプトを今までの WSH (Windows Script Host) から Python に変更しました。

2019年2月8日金曜日

印刷ダイアログで指定した枚数の二乗印刷されてしまう問題

PictureFan の印刷周りのコードを見直していて色々調べていたところ、MS のドキュメントに何やら知らないことが書いてあるのを見つけてしまいました。

PRINTDLGEXA structure

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回だけ描画すればいいということですね(ですよね?)。

2018年9月22日土曜日

PictureFan ver.0.36.0 を公開

PictureFan の ver.0.36.0 を公開しました。
ダウンロードはいつもの場所からどうぞ。

今回も多くの機能追加を行いました。
また、いつにも増して沢山の不具合を発見したので、その修正も行いました。
詳しい更新内容は更新履歴をご覧ください。

2018年5月30日水曜日

Visual C++ の wprintf の独自仕様

今でこそかなり改善されましたが、Visual C++ は C/C++ 標準規格に沿わない独自仕様が多いことで有名です。
その中で意外と知られていないと思われるのが、wprintf 系関数で文字列を出力する際の指定子の違いです。

printf で %s を 指定した場合は const char *、%c を指定した場合は char (実際に渡るのは int ですが)を要求されます。

printf("%s %c\n", "string", 'c');

ここまでは当然のことですが、wchar_t が入ってくると話がややこしくなります。
C/C++ の規格上、wprintf などの wchar_t 系の関数であっても、%s は const char *、%c は char が要求されます。
そして、wchar_t を扱いたい場合は、%ls と %lc を使わなければなりません。

/* wprintf に char の文字列と文字を渡す場合 */
wprintf(L"%s %c\n", "string", 'c');
/* wprintf に wchar_t の文字列と文字を渡す場合 */
wprintf(L"%ls %lc\n", L"string", L'c');

しかしながら、Visual C++ はこの規格に従っておらず、wprintf に %s と %c を指定した場合、wchar_t であると解釈します。
また、char を渡したい場合は独自仕様の指定子 %hs と %hc を使う必要があります。

/* Visual C++ の独自仕様により、%s と %c は wchar_t が要求される */
wprintf(L"%s %c\n", L"string", L'c');
/* char を渡す場合、独自仕様の %hs と %hc を使用する */
wprintf(L"%hs %hc\n", "string", 'c');

2018年2月22日木曜日

PictureFan ver.0.35.0 を公開

PictureFan の ver.0.35.0 を公開しました。
ダウンロードはいつもの場所からどうぞ。

今回もサムネイルを中心に多くの機能追加と不具合修正を行いました。
詳しい更新内容は更新履歴をご覧ください。