>BOOL CDoc::OnOpenDocument(LPCTSTR lpszPathName)
>{
> UpDateAllViews(NULL);
>}
こうしなきゃいけないかも。
BOOL CDoc::OnOpenDocument(LPCTSTR lpszPathName)
{
SetPathName(lpszPathName);
UpDateAllViews(NULL);
}
シリアライズで
if ( m_pImage != NULL )
{
delete m_pImage;
m_pImage = new CImage();
}
こう書いてといったけど、こうしてください。
if ( m_pImage != NULL )
{
delete m_pImage;
}
m_pImage = new CImage();
ごめんなさい。
>unさんも助けてください・・まじでやばいんですよ・・・
これでキレた。あんたがやばいからなんなんだ、と。
で、私が提示したのは、
おそらく、ViewのDisplayImage()以下は正しく動いているのであろうから、
ドキュメント側はファイル名だけを保持し、読み込みは全てView側で行うようにする。
という方針です。
// まず、アクセラレータとかで、単体でDisplayImage(*); とかやって、
// ファイル名をイキナリ渡して正しく動作するかチェックしてやってください、
// これでだめだったらこの方針ではいけません。
// 逆にこれでいけたらもらったも同然です。
デフォルトではドキュメントのシリアライズはOnOpenDocumentから呼ばれているので、
それをオーバーライドして、ファイル名だけを保持して、ドキュメントは何もせずに
ViewにUpDateAllViewsで通知をします。
View側はそれを受けて、GetDocumentして、GetPathName()でドキュメントに保持した
ファイル名を取ってくる。
// AfxMessageBox(GetDocument()->GetDocument()); とかやって確実にファイル名が
// Viewのほうでも取れてるか確認してください。
で、単体でDisplayImage(*)とやって読み込めることが確認済みであれば
あとは関数呼ぶだけです。
>不快なら放置したほうが・・
だね。大人気ないね、私も。
最後にこれだけお願いしますUpDateAllViews(NULL);はどこに定義すればいいのですか?
}
ごめん、微妙に間違ってるね。正しくは
CDocument::UpdateAllViews();
CDocumentに元々あります。派生先でもつかえます。
これを呼ぶと、ViewのOnUpdateが走ります。
すいません、CDocumentにないのですが・・
何回もごめんなさい
CDocument::UpdateAllViews();と定義して
UpDateAllViews(NULL);と書くんですよね?
どこに定義すればよろしいのでしょうか?
横からすいません。
色々教えてもらって、出来ましたっていう報告
見たことないんですけど、調べてテストして、
どこまで出来てます?
>最後にこれだけお願いします
って前にもどこかで見た気がするんですけど、
気のせいですか?
#MSDNで何を調べたか列挙してください。
#表題だけで結構です。
#というか、こんなにレスを書いてる内に自分で
#調べた方が早いと思いますよ。
もう解決しました。みなさん、ありがとうございました。
せっぱつまってたもので、自分自身わけがわからなくなっていました。
ご迷惑かけたことをここにお詫びします。
で、結局解決方法は何だったのですか?
もし、解決なされていなのだったら一から作り直されてみたら。
そして、クラスを作るときは[ALT+I]挿入⇒クラスの新規作成から⇒
クラスの種類[Generic]でつくられてみたらいかがですか。使うときは使いたいクラスの
ヘッダファイル、あるいは、使いたいメンバー関数手前に#include"するだけなので簡単
だと思いますけど。