環境は、VC++6.0 MFCです。
CRichEditCtrlのデータを取り出し、
別データと結合してファイルに保存したいのですが・・・
SDI CFormViewA 切替 CFomeViewB 切替 CFomeVewC (CRichEditCtrl)
DataA DataB DataRTF
DataA, B, RTFを1つのファイルに
Document Class
ar << DataA << DataB << DataRTF
上記イメージのようなプログラムを考えています。
現在DataA,Bを1つのファイルに保存、
DataRTFを別ファイルに保存は出来るのですが(StreamOut,StreamIn)、
どのようにしてRTFデータを取り出し、
Document ClassのSerializeで1つのファイル保存したらよいかがわかりません。
どのような方法で実現したらよいかよろしくお願いします。
RTF -> CMemFile -> BYTE配列 -> CArchive 書き込み
CArchive -> BYTE配列 -> CMemFile -> RTF 読み込み で実現しました。
次は、直接CMemFileにアクセスと思い、下記のコードでテストしましたが、
Attach でエラーとなります。
タイトルと質問が変わってしまいましたがよろしくお願いします。
void CXXXDoc::Serialize(CArchive& ar)
{
int a, b, len;
BYTE* buf;
if (ar.IsStoring()) {
a = 1; b = 2;
RTFをm_MemFileへ
len = m_MemFile.GetLength();
buf = m_MemFile.Detach(); 書き込みは成功
ar << a << b << len;
ar.Write(buf, len);
free(buf);
}
else {
a = b = 0;
ar >> a >> b >> len;
buf = new BYTE[len];
ar.Read(buf, len);
m_MemFile.Attach(buf, len, 0); <- ここでエラー
メモリファイルをRTFへ
delete[] buf;
}
}
CMemFileをクラスのメンバーから関数ローカルに変更することにより解決しました。