2010年8月27日金曜日

Windows の PageSetupDialog ではまる(3)

その1その2、ときて、車輪の開発を行うよりない・・・という結論でしたが、なんとか回避する方法はないものか?
という事で、親ウィンドウと連帯して、ページ設定ダイアログを開きなおすという手法で回避する事にしました。今度は大丈夫です。

 流れは、こんな感じです。
  1. 親ウィンドウに対して、開きなおしをしてほしいフラグを設定する
  2. PrintDialog 中の HDEVMODE をコピーして保管する
  3. PrintDialog 中の HDEVNAMES をコピーして保管する
  4. ::PostMessage( m_hDlg, WM_COMMAND, IDCANCEL, 0 ); する
  5. 親ウィンドウ側の処理で、開きなおししてほしいフラグがあれば、フラグをクリアして、再度、ページ設定ダイアログを開く。その時には PAGESETUPDLG構造体に(2,3)で保管したものを流用する。


 ダイアログをキャンセルしても、プリンタの情報等は更新されてしまいますが、しょうがないところでしょう。キャンセル時の HDEVMODE と HDEVNAME も保管しとくか???

0 件のコメント: