CRichEditCtrlのデータの取り出し方法

[戻る]
Plum 2006/07/10(月) 15:37:12
環境は、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つのファイル保存したらよいかがわかりません。
どのような方法で実現したらよいかよろしくお願いします。

Plum 2006/07/11(火) 02:41:49
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;
    }
}

Plum 2006/07/11(火) 08:37:34
[[解決]]
CMemFileをクラスのメンバーから関数ローカルに変更することにより解決しました。

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