dポイントプレゼントキャンペーン実施中!

VC++6.0 SDI
プロジェクト名:PrintD

プログラムの実行と同時に印刷を開始するプログラムを作成したいのですが、
画面も印刷ダイアログボックスも表示することなく印刷を行うことは可能なのでしょうか?

どなたかご存知の方がいらっしゃいましたらご教授下さい。

質問を載せさせていただくこと自体が初めてなので質問の仕方がオカシイ場合はご指摘下さい。
よろしくお願いします。

A 回答 (2件)

>画面も印刷ダイアログボックスも表示することなく印刷を行うことは可能なのでしょうか?



可能です。実現方法としてはダメな例ですが...MFCアプリケーションのSDIでしたら

BOOL CPrintDView::OnPreparePrinting(CPrintInfo* pInfo)
{
// デフォルトの CEditView の印刷準備
pInfo->m_bDirect = TRUE;■追加
return CEditView::OnPreparePrinting(pInfo);
}


BOOL CPrintDApp::InitInstance()
{
...省略
m_pMainWnd->ShowWindow(SW_HIDE);■括弧内修正
m_pMainWnd->UpdateWindow();

m_pMainWnd->SendMessage(WM_COMMAND,ID_FILE_PRINT);■追加
...省略
}

というようにたったの2行追加と1行修正で実現できます(ただ一瞬画面表示があったりプログラムが終了できなかったりと問題はありますが)。

何を印刷したいかにもよりますが、この手のことをするときはMFCよりもSDKかATLでベタに書いてしまった方が楽です(と言ってもMFCでもSDKでもやることは同じですが)。プリントアウトは画面への描画と同じでDCへ書き出すだけですので。

この回答への補足

nitscapeさんの方法で解決できました。

hyde19さんの方法は今後のために知っておいた方がいいと思ったので
ただいま勉強中です。

お二人のおかげで解決&スキルアップすることができました。

丁寧な説明を本当にありがとうございました。

補足日時:2005/03/26 12:12
    • good
    • 0

可能です。


画面の表示に関するプログラムを作ってみても、通常そのまま画面にパーツを描画するのは、最初のうちだけです。
画面描画用のメモリを確保(関数を置く)して、そこにパーツを書き込んで行き、パーツが揃ったところで画面に表示させます。これを繰り返す方が、1つ1つ画面に表示させるより、プログラムの動作が速くなるからです。
ということは、メモリの中身を画面に表示する必要性はなく、そのまま印刷機へ出力すれば良い訳です。
モニタに出力するか、紙に出力するかの違いでしかありません。

連続印刷ユーティリティなどファイルを指定して印刷だけをするものもありますしね。

この回答への補足

hyde19さん
回答ありがとうございます!

こんなに早く回答をいただけるとは思ってませんでした。
本当に感謝しています。

画面描画用のメモリを確保?
なんとなくイメージはわかるのですが具体的には???です・・・。
すいません、勉強不足で。

とりあえず画面描画用のメモリを確保というのを調べてみます。

それでもわからなかった場合は申し訳ないのですが
また質問させてください。よろしくお願いします。

補足日時:2005/03/22 15:54
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!