3

私の MFC アプリケーションでは、CView クラスを使用して画面上に CDocument を印刷できます。基本的に、CDC クラスを使用してテキストを書き、画面上に多角形を描画して、ドキュメントのビュー表現を提供します。

ここで、その出力ビューを Microsoft Word で使用したいとします。

ユーザーの視点から見れば、開発者の仕事をしなくても、次のことができます。

  • 図面をコピーして Word に貼り付けます。これにより、Word に貼り付けることができるラスター BMP ファイルが生成されます。
  • 図面を印刷し、PDF エクスポーターを使用します。これにより、軽量でズーム可能なベクトル PDF ファイルが生成されますが、Word で再利用するのは容易ではありません。

ビューの正確なレイアウトを維持できるため、これらの 2 つの簡単なソリューションは優れていますが、短所 (ラスターまたはフォーマット) があります。

私の問題を解決する別の方法は、SVG または VML を記述することですが、同じレイアウトが得られず、多くの作業が必要になります。

同じ種類の PDF エクスポート/印刷メカニズムを標準形式に変換するライブラリはありますか?

あなたは何を提案しますか?どうもありがとう。

4

1 に答える 1

2

ビューを拡張メタ ファイルに描画するには、まず MSDN のドキュメント ( http://msdn.microsoft.com/en-us/library/427wezx1%28v=VS.80%29.aspx ) を参照してください。

これがどのように機能するかの例を次に示します。

CMetaFileDC MFDC;

CRect rect(0,0,width,height);

MFDC.CreateEnhanced(NULL,NULL,rect,NULL);
MFDC.SetBkMode(TRANSPARENT);
MFDC.SetMapMode(MM_HIMETRIC);

CDC tempDC;
tempDC.CreateCompatibleDC(&MFDC);
MFDC.SetAttribDC(tempDC.m_hDC);

// now you draw into the DC like it was your original view

HENHMETAFILE hEnhMetaFile = MFDC.CloseEnhanced();
HENHMETAFILE hEMF = NULL;
hEMF = CopyEnhMetaFile(hEnhMetaFile,"C:\\Temp\\Test.emf");
DeleteEnhMetaFile(hEMF);
DeleteEnhMetaFile(hEnhMetaFile);
于 2013-03-20T12:51:51.467 に答える