以下の手順を行うと、印刷プレビューの拡大でASSERTするのですが、
誰かわかる方、回避方法等を教えていただけませんか?
(1)VC++6.0で、MFC AppWizard(exe)で全てデフォルトで作成する。
(2)そのままコンパイル・実行する。
(3)画面を最大化する。
(4)[ファイル]-[プリンタの設定]で、印刷の向きを[横]にする。
(5)[ファイル]-[印刷プレビュー]で、プレビュー画面(白紙ですが)を表示させる。
(6)[拡大]ボタンで、拡大をしていくと、以下の部分でASSERTしてしまう。
void CScrollView::ScrollToDevicePosition(POINT ptDev)
{
ASSERT(ptDev.x >= 0);
ASSERT(ptDev.y >= 0); ← ここでASSERTする
....
どうも、ptDev.yに負の値が入っているからのよう。
上記で、画面を最大化しないとこの現象は発生しないようです。
また、MDIでもSDIでも発生してしまう。
環境的には、以下のとおりです。
・VC++6.0 SP6
・WindowsXP Professional SP2
すいませんが、よろしくお願いします。
再現しませんでした。取り急ぎ報告だけ。
・VC++6.0 SP6
・WindowsXP Professional SP3
もしかしたら、環境に影響されているのかもしれないと思い、
以下のようなテストをしたらある状況で発生するようです。
(1)発生する場合:
・解像度:1280×1024
・用紙サイズ:A4
(2)以下の場合は発生しなかった
・解像度:1280×1024
・用紙サイズ:A3
(3)以下の場合は発生しなかった
・解像度:1024×768
・用紙サイズ:A4
何か、解像度と用紙サイズの関係で条件があるようなのですが、、。
デフォルトプリンタは信頼できるものですか?
デフォルトプリンタはRICOH製ですが、通常のページプリンタです。
また、プリンタをPDFにしても同様な現象が発生します。
なにか、環境的なものなんでしょうか?
ScrollToDevicePositionの説明に
> ビューは、指定した位置がウィンドウの左上隅になるようにスクロールされます。
> このメンバ関数は、ビューが伸縮モードのときは呼び出さないでください。
とあります。
印刷時、ビューが伸縮モードののときに「ScrollToDevicePosition」
を使っていませんか?
MFCのウィザードで作成したのみで、ソースに一切修正を加えてない状態です。
ScrollToDevicePositionは、MFCのなかから、コールしている部分なので、
ビューが伸縮モードかどうかが不明です。
ビューが伸縮モードかどうかを調べる方法がよく分からないので、
もし、知っていたら教えてください。
僕もCScrollViewの印刷はあまりやったことないんで、
CScrollViewのサンプルSCRIBBLEを参考にするといいです。
http://msdn.microsoft.com/ja-jp/library/f35t8fts.aspx