- 締切済み
【VC++】CDC→WMFファイルに保存するには。
こんにちは。 VC++&MFCとWMF(Windows Meta File)について質問させて下さい。 私は、8年前くらいに学生の研究で普通のテキストエディタ等でC++のコーディングをしていたことがあるのですが、このたび仕事でVisual StudioとMFCを使用してWindowsプログラムの改修をすることになりました。 ネットで検索したり書籍で調べたのですがなかなか的を得ず、質問させて頂こうと思いました。 改修対象はVC++6.0で書かれたプログラムです。 至ってシンプルで、以下の機能を有します。 ・グラフ等の描画内容が書かれたファイルを読み込み、自ウィンドウ内に表示 ・上記で表示されたものを印刷 今回これに、「画面表示したものをWMFフォーマットのファイルに落とす」という機能を加えようと思っています。 現在のソースコードは、おそらく自動生成されたであろう「xxxView」というクラスの「OnDraw」というメソッドから、ファイルを読み出す関数を呼び出したりして、引数で貰ったデバイスコンテキスト(pDC)でお絵描きをしています。 メニューバーから「保存」が選択されると保存ダイアログを表示し、WMFファイルに保存するようにしたいのですが、以下の点をご教示頂きたくお願い致します。 (1) CDCで描いたものをWMFファイルに保存するにはどうすれば良いのか。 (2) メニューのコマンドID(というのでしょうか…)に対応する処理(今回実装する処理)はどこに書くのが妥当なのか。 (3) メニューのコマンドIDには用意されているもの(ID_FILE_SAVE_ASなど)が色々あるが、今回それらは用いずに新たに自分で定義するべきなのか。 (4) その他、ご指摘やアドバイス、参考となりそうな書籍など。 お手数ですが、ご回答頂けると幸いです。 宜しくお願いします。
- みんなの回答 (1)
- 専門家の回答
みんなの回答
- tsukasa-12r
- ベストアンサー率65% (358/549)
(1) だけですが、 CMetaFileDC インスタンス作成 ↓ CMetaFileDC::Create ↓ いろいろ描画 ↓ CMetaFileDC::Close といった流れになるようです。 http://msdn.microsoft.com/ja-jp/library/427wezx1(v=vs.80).aspx
お礼
ご回答ありがとうございます。 CMetaFileDCのインスタンスを作成して、CDCのインスタンスを作成してOnDraw関数を呼び出し、戻ってきたらCMetaFileDCのBitBltメソッドでCDCをコピー。という手順になるのでしょうか?。。 現在割り込みの仕事が入り本作業はペンディングしているのですが、月曜日に試してみるように致します。 ありがとうございました。 引き続き、皆様のご回答お待ちしております。
補足
2週間経ちましたので、そろそろ締め切ろうと思います。 メニューのコマンドは、「xxxView」クラスに新しいメソッドを設けて、そこで受けることにしました。 メタファイルのデバイスコンテキスト作成は出来たのですが、現状、CDCで描画した内容をビットマップでメタファイルのデバイスコンテキストにコピーしてくることしか出来てません。 また改めて質問内容を変えて投稿させて頂きます。 お騒がせ致しました。