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


わたさと  2003-03-04 10:55:04  No: 51175  IP: [192.*.*.*]

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

編集 削除
みるく32  2003-03-04 11:18:27  No: 51176  IP: [192.*.*.*]

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

今回の場合はたとえば、

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

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

OnPrint();

でいいかな。

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

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

編集 削除
わたさと  2003-03-04 13:42:02  No: 51177  IP: [192.*.*.*]

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

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

です。

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

編集 削除
みるく32  2003-03-04 13:53:02  No: 51178  IP: [192.*.*.*]

OnFilePrint(); ではダメ?

編集 削除
わたさと  2003-03-04 14:37:17  No: 51179  IP: [192.*.*.*]

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

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

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

でおこなっています。

編集 削除
みるく32  2003-03-04 15:12:07  No: 51180  IP: [192.*.*.*]

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

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

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

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

編集 削除