掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
Serialize関数による読み込み (ID:69535)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
またもお世話になります.環境は XP, VS2008C++, MFCです. ビュー・ドキュメント形式のプロジェクトで,Serialize関数で ファイルから読み込んだデータを表(リストコントロールを貼り 付けたモードレスダイアログ画面)に表示させ,また表を修正した 結果をファイルに保存するプログラムを作成しました. プログラムを起動した直後はデータが正しく読み込まれて表に 表示され,表を修正した結果も正しく保存されているようです. ところが,プログラム実行中に再度,同じファイルからデータ を読み込もうとしても,読み込んでくれません. 下のSerialize関数内でAfxMessageBox関数のメッセージが表示 されないのです.別のファイルを読み込むときはメッセージが 表示され,正しく読み込まれます. Serialize関数は同じファイルからデータを再度読み込むことが できない仕様になっているのでしょうか? それともリセットのためのフラグや関数呼び出しをやってないために 再読み込みができないのでしょうか? MSDNを調べてみたのですが,よくわかりません.どうかよろしくお願 いします. struct BeamType { // 表の1行分のデータを格納する構造体 size_t ndiv; double L,D,d; }; CtestDocクラス内 private: vector<BeamType> v; // 表1行分のデータ void CtestDoc::Serialize(CArchive& ar) { size_t i, n; BeamType Bm; if (ar.IsStoring()) { // 保存 n = GetSize(); // vector v に格納されている要素数を取得 if(!n) return; ar << n; for(i=0; i<n; ++i) { GetData(i, Bm); // 表1行分のデータを取り出す ar << Bm.ndiv << Bm.L << Bm.D << Bm.d; } else { // 読込 AfxMessageBox("kokodayo"); Clear(); // vector v をクリア ar >> n; for(i=0; i<n; ++i) { ar >> Bm.ndiv >> Bm.L >> Bm.D >> Bm.d; AddData(Bm); // 表1行分のデータを追加 } } } void CtestView::OnInitialUpdate() { CView::OnInitialUpdate(); ・・・ if( !m_pDlg->GetSafeHwnd() ) { m_pDlg->Create( GetDesktopWindow() ); // モードレスダイアログの生成 } m_pDlg->ShowList(); // 表を表示し直す. }
←解決時は質問者本人がここをチェックしてください。
更新する
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.