OnPrintをボタンから実行するには?


わたさと  2003-03-04 19:55:04  No: 51175

初めて書き込みさせていただきます。
VC6.0でMFCをつかってSDIアプリを作っています。
Viewにあるボタンを押したらOnPrint関数を実行したのですが、どのようにしたらいいかわかりません。教えてください。よろしくお願いします。


みるく32  2003-03-04 20:18:27  No: 51176

質問として情報不足。
・その「OnPrint関数」ってのはどのクラスに所属しているのか。
を書かないと、回答者は想像の域でしかアドバイスすることができない。

今回の場合はたとえば、

CMainFrame にその関数があるなら、public であることを確認した上で、
AfxGetMainWnd()->OnPrint();
でいいんじゃないの?

あるいは、CView::OnPrint(); のオーバーライドかもしれないから、
その場合は単に

OnPrint();

でいいかな。

という回答になる。OnPrint() がもしかして自作の関数で、さらに
いくつかの引数を伴っていたら・・・情報不足につき回答不能。

っていうか、わからないのはボタン押下イベントの取得方法かな?


わたさと  2003-03-04 22:42:02  No: 51177

説明不足で申し訳ありませんでした。
OnPrint関数はMFCのAPPのウィザードで作成した際に組み込んだ
ものです。

引数はC×××View::OnPrint(CDC* pDC, CPrintInfo* pInfo)

です。

OnPrint関数やボタンのクラスもともにViewクラスにあります。
ボタンを押したときのイベント取得はわかります。
わからないところはどのようにOnPrint関数に引数を渡せばいいのか
というところです。


みるく32  2003-03-04 22:53:02  No: 51178

OnFilePrint(); ではダメ?


わたさと  2003-03-04 23:37:17  No: 51179

みるく32さんお返事ありがとうございます。
印刷することは可能になりましたが、なぜか印刷ダイアログを
表示させないで印刷しようとすると印刷できなくなってしまいます。
印刷ダイアログを表示させないで印刷することはできないでしょうか?

ちなみに印刷ダイアログを表示させない方法はViewクラスの

BOOL C×××View::OnPreparePrinting(CPrintInfo* pInfo)
{
  pInfo->m_bDirect = TRUE;
  return DoPreparePrinting(pInfo);
}

でおこなっています。


みるく32  2003-03-05 00:12:07  No: 51180

>印刷ダイアログを表示させないで印刷する
その場合は、CPrintInfo 構造体に適切な値を代入してやる必要が
あるんじゃないかしら?

MFCのソースコードをたぐっていくかして、適切な値を放り込んで
ください。

あ、これができれば、ダイレクトで OnPrint() 呼べばいいのか。

意図的には、「CPrintInfo 構造体の値を埋めるために印刷ダイアログを
表示してユーザさんに埋めてもらう」つもりで、
「OnFilePrint()ではダメ?」と返答したんです。はい。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加