過去ログ「出力画像をワードに貼り付けるには」について

[戻る]
リング [E-Mail] 2003/02/07(金) 20:27:42
ここに書き込ませて頂くのは初めてのリングです。
何時も過去ログを検索しつつ役立てさせて頂いているのですが、
題名にある質問においての

>SDIのOnDrawで出力した画像をWordに貼り付けるにはどうしたらいいでしょうか?
>「ファイル」の「印刷」からprnファイルにはできるんですが・・・。
>よろしくお願いします。
>
>Wordに貼り付けるには、EMFファイル(Enhanced Meta File)
>にする必要があります。
>CreateEnhMetaFile() とかで調べるといいかもしれません。
>
>また、クリップボードにEMFファイル(ちょっと違うけど)
>を置けば、Word上でペースト(Ctrl+V)で貼り付けられます。

と言う部分がうまく出来ません。
自分でも調べてはいるのですが詳しく説明していただければ幸いです。

らふ 2003/02/07(金) 20:41:58
何がうまくいかないのかわかりません。

Googleで「拡張メタファイル」を検索すると山のようにサンプルがでます。
まずはそれらを参考にやってみて、できなければ具体的に質問してください。

リング 2003/02/07(金) 22:48:56
らふさんご指摘いただいてありがとうございます。

とりあえずはサンプルをみながら頑張ってみたいと思います。
ちなみにうまくいかないと言うのはプログラム上のどの部分でEMFを宣言(?)すれば良い
のか?と言う単純な事なようです。
作っているプログラムは
    #include<stdio.h>
    int d[10000],x,y,z,a,aa,bb,cc,i;
    x=y=z=a=0;
    for(z=0,a=5,i=1;z<500;z+=5,a+=5){
        for(x=0,y=5;x<500;x+=5,y+=5,i++){
        CRgn myRgn;
        myRgn.CreateRectRgn(x,z,y,a);
        CBrush aaa(RGB(aa,bb,cc));
        d[1]=a;
        〜d[10000]=b;//d「1」からd「10000」まで10000パターンのd値をとる
        aa=bb=cc=d[i];
        pDC->SelectObject(&myRgn);
        pDC->SelectObject(&aaa);
        pDC->PaintRgn(&myRgn);
と言うような感じです。

リング 2003/02/08(土) 16:36:18
サンプルと格闘してみましたがいまいち解決の糸口が見えてきません。
手順としてはSDIでスケルトンを作成し上記のプログラムを入れ、
そこにサンプルを参考にメタファイルを作成するプログラムを付け加える。
と言った流れでよいのでしょうか?

何やらどんどん質問が変わってきている気もしますが教えて頂きたいと思います。
環境はWin2000VC++6.0でMFCを使っています。

n [E-Mail] 2003/02/08(土) 17:30:17
C/C++の文法がわかっていない状態でEMFいじるのは無謀ですよ?

リング 2003/02/08(土) 17:55:09
nさんの言うとおり文法を疎かにしてサンプルや例をチョロチョロ変えて使ってきた私には
無謀だったように思います。今はとりあえず他の方法を考えながら文法についても1から勉
強していきたいと思います。

ここはこれで済にさせて頂きますが、SDIでOnDrawしたMFCの画像をWardに貼り付ける方法
について何かアドバイスがありましたら教えてもらいたいと思います。

Wardに貼り付けるのではなく単純に画像を印刷の際拡大するような方法でも構いません。

最後に拙い質問に書き込みを下さいましたらふさん、nさん本当にありがとうございました。

リング 2003/02/08(土) 17:55:39
[[解決]]
すみません済みを忘れました。

n [E-Mail] 2003/02/08(土) 18:01:32
Alt+PrintScreenキーでアクティブウィンドウ像をクリップボードにコピーし、
それからWordに貼り付けるというのではダメですか?

kazuma 2003/02/08(土) 18:21:45
EMF の作成についてですが、
描画部分は既に出来ているようですから、
描画に使う DC を CMetaFileDC (CDC の派生クラス) に変えるだけで出来ますよ。

CMetaFileDC dc;
dc.CreateEnhanced(NULL, "test.emf", NULL, NULL);

(ここで dc を使って描画する)

dc.CloseEnhanced();

リング 2003/02/08(土) 21:07:14
二つの方法で共に問題を解決することが出来ました。

nさん、kazumaさんありがとうございました。

古いスレッドには追加発言できません。