トップ回答者
MFCアプリケーションでのWindowsFormControlのデシリアライズについて

質問
-
MFCアプリケーションでのWindowsFormControlのデシリアライズについて
MFCアプリケーションで、VB.netで作成したWindowsFormContorlをシリアライズ、デシリアライズしようと悪戦苦闘しています。
MFCアプリケーションのHeaderで
CWinFormsControl<FormCtrlVB::FormCtrlVB> m_ctrl2;
のように定義しているVB.netで作成した、WindowsFormControlを以下のようにシリアライズします。
(とりあえずエラー処理は入れていません)
System::IO::FileStream^ fs = gcnew System::IO::FileStream( "e:\\VBCtrl.dat",
System::IO::FileMode::Create );
System::Runtime::Serialization::Formatters::Binary::BinaryFormatter bf;
try
{
bf.Serialize ( fs, m_ctrl2 );
}
__finally
{
fs->Close();
}
シリアライズは正常にできていることは確認できたのですが、このデータをデシリアライズすることができなくて困っています。
VB.netを使用してデシリアライズできたときのソースを参考にMFCのデシリアライズのコードを色々と書いてみたのですが、コンパイルエラーが発生してうまくいきません。
BinaryFormatterのDeserialize()の戻り値を利用して、CWinFormsControl<FormCtrlVB::FormCtrlVB>オブジェクトを生成したいのですが、castをすればいいのか、はたまた、他の方法なのか....。
ご存知の方、いらっしゃいませんか?
回答
すべての返信
-
-
kozzさん、ありがとうございました。
一歩前に前進することができました。
CWinFormsControl<FormCtrlVB::FormCtrlVB>で宣言していたので、
このままを使用してcastをすることばかり考えていて、
回答いただいたようなシンプルなコードに頭が切り替わらなかったのがいけなかったようです。
まずは、FormCtrlVB::FormCtrlVBという固定のコントロールをデシリアライズして、
貼り付けることができるようになりました。
次は、
・任意の自作のコントロールを選択して貼り付ける。
・コントロール以外の情報と同じファイルにシリアライズの情報をのせる。
等、色々課題はあるのですが、ようやくそちらに話を移せるようになりました。
もし、これらの件に関してもご存知のことがありましたら教えてください。
別の質問として作成したほうがいいようでしたら、別に作成しますので、指摘ください。 -
>・任意の自作のコントロールを選択して貼り付ける。
>・コントロール以外の情報と同じファイルにシリアライズの情報をのせる。
もっと具体的にどういう過程になるか、何を調べてどううまくいかなかったのか、提示しましょうね。
>別の質問として作成したほうがいいようでしたら、別に作成しますので、指摘ください。
すでに回答マークがついていますので、
上記情報を加えた上で、新規に質問を立ち上げたほうが良いですね。
>MFCのデシリアライズのコードを色々と書いてみたのですが、コンパイルエラーが発生してうまくいきません。
それから、こういう情報は大切ですよ。
次からどういうCodeを書いて、どういうErrorになったか具体的に書きましょう。