助言求む – 固定ページ 5 – プログラミング – Home

通知
すべてクリア

[解決済] 助言求む

固定ページ 5 / 5

PAI
 PAI
(@PAI)
ゲスト
結合: 23年前
投稿: 359
 

>BOOL CDoc::OnOpenDocument(LPCTSTR lpszPathName)
>{
> UpDateAllViews(NULL);
>}

こうしなきゃいけないかも。
BOOL CDoc::OnOpenDocument(LPCTSTR lpszPathName)
{
SetPathName(lpszPathName);
UpDateAllViews(NULL);
}


返信引用
***
 ***
(@***)
ゲスト
結合: 22年前
投稿: 18
 

シリアライズで

if ( m_pImage != NULL )
{
delete m_pImage;
m_pImage = new CImage();
}

こう書いてといったけど、こうしてください。
if ( m_pImage != NULL )
{
delete m_pImage;
}
m_pImage = new CImage();


返信引用
PAI
 PAI
(@PAI)
ゲスト
結合: 23年前
投稿: 359
 

ごめんなさい。

>unさんも助けてください・・まじでやばいんですよ・・・

これでキレた。あんたがやばいからなんなんだ、と。

で、私が提示したのは、
おそらく、ViewのDisplayImage()以下は正しく動いているのであろうから、
ドキュメント側はファイル名だけを保持し、読み込みは全てView側で行うようにする。
という方針です。

// まず、アクセラレータとかで、単体でDisplayImage(*); とかやって、
// ファイル名をイキナリ渡して正しく動作するかチェックしてやってください、
// これでだめだったらこの方針ではいけません。
// 逆にこれでいけたらもらったも同然です。

デフォルトではドキュメントのシリアライズはOnOpenDocumentから呼ばれているので、
それをオーバーライドして、ファイル名だけを保持して、ドキュメントは何もせずに
ViewにUpDateAllViewsで通知をします。

View側はそれを受けて、GetDocumentして、GetPathName()でドキュメントに保持した
ファイル名を取ってくる。
// AfxMessageBox(GetDocument()->GetDocument()); とかやって確実にファイル名が
// Viewのほうでも取れてるか確認してください。

で、単体でDisplayImage(*)とやって読み込めることが確認済みであれば
あとは関数呼ぶだけです。

>不快なら放置したほうが・・
だね。大人気ないね、私も。


返信引用
ゆば
 ゆば
(@ゆば)
ゲスト
結合: 22年前
投稿: 32
Topic starter  

最後にこれだけお願いしますUpDateAllViews(NULL);はどこに定義すればいいのですか?
}


返信引用
PAI
 PAI
(@PAI)
ゲスト
結合: 23年前
投稿: 359
 

ごめん、微妙に間違ってるね。正しくは
CDocument::UpdateAllViews();

CDocumentに元々あります。派生先でもつかえます。

これを呼ぶと、ViewのOnUpdateが走ります。


返信引用
ゆば
 ゆば
(@ゆば)
ゲスト
結合: 22年前
投稿: 32
Topic starter  

すいません、CDocumentにないのですが・・
何回もごめんなさい


返信引用
ゆば
 ゆば
(@ゆば)
ゲスト
結合: 22年前
投稿: 32
Topic starter  

CDocument::UpdateAllViews();と定義して
UpDateAllViews(NULL);と書くんですよね?
どこに定義すればよろしいのでしょうか?


返信引用
けみ
 けみ
(@けみ)
ゲスト
結合: 22年前
投稿: 4
 

横からすいません。

色々教えてもらって、出来ましたっていう報告
見たことないんですけど、調べてテストして、
どこまで出来てます?

>最後にこれだけお願いします
って前にもどこかで見た気がするんですけど、
気のせいですか?

#MSDNで何を調べたか列挙してください。
#表題だけで結構です。
#というか、こんなにレスを書いてる内に自分で
#調べた方が早いと思いますよ。


返信引用
ゆば
 ゆば
(@ゆば)
ゲスト
結合: 22年前
投稿: 32
Topic starter  

もう解決しました。みなさん、ありがとうございました。
せっぱつまってたもので、自分自身わけがわからなくなっていました。
ご迷惑かけたことをここにお詫びします。


返信引用
解決方法求む
 解決方法求む
(@解決方法求む)
ゲスト
結合: 22年前
投稿: 1
 

で、結局解決方法は何だったのですか?
もし、解決なされていなのだったら一から作り直されてみたら。
そして、クラスを作るときは[ALT+I]挿入⇒クラスの新規作成から⇒
クラスの種類[Generic]でつくられてみたらいかがですか。使うときは使いたいクラスの
ヘッダファイル、あるいは、使いたいメンバー関数手前に#include"するだけなので簡単
だと思いますけど。


返信引用
固定ページ 5 / 5

返信する

投稿者名

投稿者メールアドレス

タイトル *

プレビュー 0リビジョン 保存しました
共有:
タイトルとURLをコピーしました