2010年8月27日金曜日

Windows の PageSetupDialog ではまる

 Windows には、CommonDialog と呼ばれるものが存在します。色の設定、フォントの設定、プリンタの設定、ドキュメントの印刷ページ設定などが、これで行えます。ルック&フィールを統一しようという趣旨で提供されています。
 ある日、PageSetupDialog に存在していた プリンタの選択機能が取り除かれました。Windows Vista からです。糞OS Vista から取り除かれました。
 ドキュメントでは
http://msdn.microsoft.com/ja-jp/library/cc410957.aspx

PrintDlg 関数は、[プリンタの設定]ダイアログボックスを表示することもできます。
しかし、新しいアプリケーションはこの目的で PrintDlg を使うべきではありません。
[プリンタの設定]ダイアログボックスは、PageSetupDlg 関数が作成する
[ページ設定]ダイアログボックスによって置き換えられています。

と、ありますが、こうせざるをえない状況を強いられているのです。

 さて、CommonDialog では、Hook によりハンドラを設定してカスタマイズを行います。
しかし、PageSetupDialog 内のプリンタを変更する手段が用意されていません。もっと言うと、強いられた状況において、プリンタの設定ダイアログで変更された用紙サイズ等の情報を反映させるための手段が用意されていません。つまり、車輪の開発で自前でプリンタを変更する手段を実装しないといけなさそうなんです。
 何故プリンタの設定ボタンが急に無くなったのでしょう?無くなったら、無くなったで代替手段を用意してくれても良さそうなもんですが、完全に隠蔽されていて対処のやりように困ってます。
 残された手段は、コモンダイアログを使わない事。何のためのコモンダイアログなのか、ぼやきまくりっす。

0 件のコメント: