• 締切済み

VC++APPウィザードの印刷指定

はじめまして VC++6.0で、SDIアプリケーションを作成しています。 アプリケーションウィザードで印刷と印刷プレビューをサポートするのチェックを外してプロジェクトを作成したのですが、後から印刷を行いたいとの要求が出てきました。 かなり作成の進んだプロジェクトなので、出来れば一からやり直しは避けたいのですが、 「印刷…」をチェックしたのと同等の変更を後から加える事は出来るでしょうか? 若しくは他のうまい方法はありますでしょうか? どなたかお知恵をお貸しください。

みんなの回答

  • FAY
  • ベストアンサー率49% (95/193)
回答No.2

> メニューが無効になっている理由が判れば良いのですが…。 Viewクラスのメッセージマップの3行があればメニューは有効になるはずなので、 考えられるのは、印刷メニューのIDが ID_FILE_PRINT になっていないくらいですね。 どうしてもだめなら印刷メニューのIDでWM_COMMANDメッセージハンドラ作っちゃうしかないかな。 で、そのメッセージハンドラの中で基底クラスの OnFilePrint() 呼ぶとか。 あと、OnPreparePrinting() のオーバーライド直後の実装は return CView::OnPreparePrinting(pInfo); になってると思うんですが、これを return DoPreparePrinting(pInfo); 変えてあげないと思い通りにいきません。 割とはまりやすいところなので念のため。

MasayanCool
質問者

お礼

引き続きのご教示ありがとうございます。 >どうしてもだめなら印刷メニューのIDでWM_COMMANDメッセージハンドラ作っちゃうしかないかな。 結局あきらめて、今はその様にしています。 プレビューがやっかいなので、プレビュー無しで進めています。

  • FAY
  • ベストアンサー率49% (95/193)
回答No.1

SDIでDocument-Viewアーキテクチャをしているという前提で... Appクラスのメッセージマップに ON_COMMAND(ID_FILE_PRINT_SETUP, CWinApp::OnFilePrintSetup) を追加 Viewクラスのメッセージマップに下の3つを追加 ON_COMMAND(ID_FILE_PRINT, CView::OnFilePrint) ON_COMMAND(ID_FILE_PRINT_DIRECT, CView::OnFilePrint) ON_COMMAND(ID_FILE_PRINT_PREVIEW, CView::OnFilePrintPreview) さらに OnPreparePrinting() OnBeginPrinting() OnEndPrinting() をオーバーライド それで、印刷時にID_FILE_PRINTコマンド、印刷プレビュー時にID_FILE_PRINT_PREVIEWコマンドをメッセージで送ってやればOKかな。 (WM_COMMANDで明示的に送らなくてもメニューやボタンのIDに設定してやればOK)

MasayanCool
質問者

お礼

ご回答ありがとうございます。 実はご回答いただいた内容のコードは生成されていました。 と言う事は、印刷を使用する設定でプロジェクトを作成していたのですね。 曖昧な質問で申し訳ありません。 実際の問題は、メニューの印刷と印刷プレビューがグレーになっていて、選択出来ない事なのです。 試しに新しく作成したプロジェクトでは、最初から印刷と印刷プレビューが選択できる状態なので、使用しない設定で作成したと思いこんでいました。 メニューが無効になっている理由が判れば良いのですが…。

関連するQ&A

  • MDIでプロジェクトを作成しSDIとして使用する方法

    次の開発環境でWindowsアプリを作成するにあたり、 アプリケーションの種類をSDIとすべきかMDIと すべきか迷っています。  WindowsXP Professional  Visual Studio.NET 2002  VC++ MFC そこで、質問なのですがアプリケーションの種類を MDIとしてプロジェクトを作成した後にSDIと同じ動き となるようにコードを書く(変更する)ことがで きますか。 例えば、プロジェクトを起動させると、常に1つの ドキュメントがメインウィンドウ全体に表示される。 ご存じの方すいませんがよろしくお願いします。

  • はがき宛名印刷ウィザードが立ち上がらない

    WORDで年賀状の宛名印刷をするためにはがき宛名印刷ウィザードを実行しようとするのですが、新たな文書もしくはテンプレート作成されるものの、ウィザードが立ち上がりません。インストールされていなかったのかと思い、再インストールもしてみたのですが、状況は変わりませんでした。「新しいドキュメントの作成」にウィザードはちゃんと入っているのですが、それを開いてもウィザードが立ち上がらないのです。原因がつかめません。どなたか知恵をお貸しください。 OSはWinXP、WORD2002を使用しています。

  • MFCにて、ウィザードで1度設定した内容の変更

    MFCにて、 1.プロジェクト作成時のアプリケーションウィザード 2.リソースを選択して、クラスウィザード などの、ウィザードで1度設定した内容が しばらく、コードを書いた後に、やはり、 変更したいと、考えたときに。 どのようにすれば、簡単に修正できるのでしょうか? もう、一度、ウィザードがあがって、 現在の状態が表示されていて、そのまま普通に 変更できれば理想ですが、そのようなUIが見当たりませんでしたので。 ソースのバックアップをとって、また、作りなおす ハメになってしまいます。 よろしくお願いします。

  • ウインドウのビューをリストビューにするには?(VC++6.0)

    VC++6.0 MFCにて MFC AppWizardにてプロジェクトを作成します。 SDIを選択し、後はデフォルトのままです。 そうやって作ったベースとなるコードを実行すると、 普通にウインドウが開きます。(当然か) そのウインドウのビューをリストビューにしたいのですが、 どこにどのようなコードを書けば良いのでしょうか?

  • 画面を表示せずに印刷

    VC++6.0 SDI プロジェクト名:PrintD プログラムの実行と同時に印刷を開始するプログラムを作成したいのですが、 画面も印刷ダイアログボックスも表示することなく印刷を行うことは可能なのでしょうか? どなたかご存知の方がいらっしゃいましたらご教授下さい。 質問を載せさせていただくこと自体が初めてなので質問の仕方がオカシイ場合はご指摘下さい。 よろしくお願いします。

  • VC++ Windows2000 でリソースが開けない

    環境:Windows2000SP2 Visual C++ 6.0 SP5 VC++ 超初心者です。 MFCアプリウィザード(EXE)でSDIアプリケーションのスケルトンを作成し、手を加えずにビルドしましたが、エラー 「F:\…test5\test5.rc(11) : fatal error RC1015: cannot open include file 'afxres.h'.」 rc.exe の実行エラー が出て実行できません。 また、リソースウィンドウを開いてみると、リソースが一つも表示されずにその代わりに、 「ロードに失敗しました」と表示されています。 VC++をWindows2000で使用する場合には、何かしなければいけないのでしょうか?

  • プロジェクトのVC6からVC9の移行時のエラー

    現在、VC6で作成したプロジェクトをVC9に移行しています。 そこで、Debug版でコンパイルするとリンク時に下記エラーがでます。 //下記が、エラー内容 1>LINK : fatal error LNK1104: ファイル 'mfc42d.lib' を開くことができません。 Release版でコンパイルすると発生しません。 他の質問で同じような内容がありましたが、その対策内容を実行しようとするも、よく解りませんでした。 //////////////下記が参考にした解決策等////////////////////////////////// 今試しにVC6で・MFCアプリ(DLL共有) ・SDIアプリ・そのほかはデフォルトという条件で作って、VC2005 Proに変換してみたところ、問題なくコンパイル/リンクまでできました。もしかしてプロジェクトの中(ソリューションのツリーの中)に明示的にmfc42d.libを登録しているということはありませんか?vcのプロジェクトは"プロジェクト名.vcproj"で、単なるテキストファイルなので、その中もよく見てください。 /////////////////////////////////////////////////// 他に解決策はありますか?

  • VC++で.csprojが開けません。

    KinectのDeveloperToolKitを利用し、サンプルファイルをVisual C++ 2010 Express で開こうとした所 このバージョンのアプリケーションではサポートされないプロジェクトの種類(.csproj)です。 この種類のプロジェクトをサポートするバージョンを使用してください。 というエラーが出ます。 開こうとしたサンプルファイルはAvateeringというファイルなんですが、このサンプルの紹介ページでは vc++2010Expressで開けると書いてあるのです。 vc側のエラーだと思うのですが、経験した事がある方や解決法をご存知の方がいらっしゃいましたらご教授ください。よろしくお願いします。

  • 写真の印刷ウィザードの設定について

    こんばんは。 写真の印刷ウィザードを使ってデジカメ写真を印刷するのですが、一気に大量の印刷を実行すると枚数制限的に印刷できなかったり、作動が遅かったりする不具合があるので、マイピクチャを『写真』表示にして一枚ずつ見ながら印刷をしています。 その際、写真の印刷ウィザードはいつも普通紙・A4になっていて、光沢紙・Lなどにはそのつど設定しなくてはならないようです。 その後、写真の印刷ウィザードのタブの中に『お気に入り』というのがあることを見つけ、設定を残せるましたが、それでも毎度呼び出す必要があるようです。 そこで、既定の設定を変える方法はないのかと思い、質問させていただきます。 写真の印刷ウィザードの一覧で選択し(チェックボックスをチェックし)設定すれば1度ですみますが、先述のように大量だとやはり複数回必要ですから、既定にできればと思っています。 アドバイスよろしくおねがいします。

  • VC++のプロジェクト指定

    VC++でほぼ始めて”EXE”を開発するのですが、[新規作成]でどのプロジェクトを指定すればいいかわかりません。 つまり、「MFC AppWizard(exe)」と「Win32Application」と「Win32ConsoleApplication」の使い分けがわかりません。 ちなみに、現在、あるAPからCALLされるEXEを作ろうとしています。 このEXEの機能は、レジストリからある情報を読み込み、その内容をINIファイルに出力し、読み込んだレジストリ情報で指定されているEXEにパラメータとしてこのINIファイルを設定し、実行させるものです。 宜しくお願いします。

専門家に質問してみよう