Windows 10 1703/Creatorsのアップデートで問題が発生した古いMFCアプリケーションにジャンプしました。それはXPのWindows 10/1607に正常に動作します。 調査の結果、Windows 10/1703では、クリップボードのメタファイル(wmfとemf)をCRichTextViewに貼り付けて保存できないようです。グラフィックスデータはrtfファイルに埋め込まれていません。ここ は剥ぎ取ら例です。Windows 10のクリエイターアップデートでMFC RichTextEditのメタファイルグラフィックスを取得する
static void testFn(CRichEditView* View)
{
// Minimal Example
// Init MetaFileDC
CMetaFileDC MetaFileDC;
CClientDC DC(NULL);
MetaFileDC.CreateEnhanced(NULL, NULL, NULL, NULL);
CRect Recht(0, 0, 400, 300);
MetaFileDC.SetAttribDC(DC.m_hDC);
MetaFileDC.SetWindowOrg(0, 0);
MetaFileDC.SetWindowExt(Recht.Size());
// draw : "ABC" and a line
MetaFileDC.TextOutA(0, 0, "ABC");
MetaFileDC.MoveTo(0, 0);
MetaFileDC.LineTo(Recht.right, Recht.bottom);
// to clipboard
View->OpenClipboard();
EmptyClipboard();
SetClipboardData(CF_ENHMETAFILE, MetaFileDC.CloseEnhanced());
CloseClipboard();
// paste from clipboard
View->GetRichEditCtrl().Paste();
// save rtf file
View->GetDocument()->OnSaveDocument("abc.rtf");
}
この例では、拡張メタファイルMIT「ABC」とCRichTextViewにラインを貼り付けし、Windows XPから
- 「abc.rtf」として文書を保存しますWindowsの1607分の10にこれは、それはおそらく関連しているファイルが小さくなり、データが
が保存されません更新、最新のクリエイターと
アイデア?クリップボードなしでドキュメントのメタファイルを取得する方法はありますか? ビットマップはまだ動作します。
これはコンパイラの問題ではありません。 Windows 7と10/1703で同じexeファイルを実行すると、異なる結果が得られます。 – Andreas
使用しているVSのバージョンは? 'CRichEditView'によってどのバージョンのリッチエディットコントロールが使用されていますか? – zett42
_aの方法は、クリップボードなしでドキュメント内のメタファイルのグラフィックを取得するには[この回答](https://stackoverflow.com/a/1490785/7571258)を読んでください。それはC#ですが、必要なRTFタグを示しています。 – zett42