DocクラスのOnOpenDocumentの時の動作が他の時と違う? – プログラミング – Home

通知
すべてクリア

[解決済] DocクラスのOnOpenDocumentの時の動作が他の時と違う?


ナオーバ
 ナオーバ
(@ナオーバ)
ゲスト
結合: 23年前
投稿: 187
Topic starter  

CMainFrameでフォルダ選択をした後に

pDoc->SetPath( szPath ); // パスを設定
pDoc->FileRead(); // ファイルを読み込む
this->GetTreeView()->SelectRoot(); // ツリービューのルートを選択
szPathはフォルダ選択クラスより取得します

があります。問題なく予定した動作をしています。

これと同じ動作を 最近使ったファイル で実装したいので、

DocクラスのOnOpenDocumentに

BOOL CViewerDoc::OnOpenDocument(LPCTSTR lpszPathName)
{
// if (!CDocument::OnOpenDocument(lpszPathName))
// return FALSE;

this->SetPath( lpszPathName );
this->FileRead();

CMainFrame* pFrm = (CMainFrame *)AfxGetMainWnd();
ASSERT( pFrm );
ASSERT( pFrm->GetTreeView() );
pFrm->GetTreeView()->SelectRoot();

return TRUE;
}

をしてもツリービューのルートを選択してくれません。
何故でしょうか?

どこを調べると良いかでも、解答でもなんでもいいのでよろしくお願いします。

WIN2000 SP2
VC6.0 SP5
MFC使用


引用未解決
トピックタグ
ナオーバ
 ナオーバ
(@ナオーバ)
ゲスト
結合: 23年前
投稿: 187
Topic starter  

解決しました

自作関数 FileRead();内でファイルを読み、UpdateAllViews( NULL );をしています
フォルダ検索時はこの後にツリービューのルートを選択をしても問題ないのですが、

OnOpenDocument時は、CSingleDocTemplate::OpenDocumentFile中で
InitialUpdateFrameが呼ばれて、すべてのビューのOnInitialUpdateが呼ばれるので、
ツリービューのルートを選択をしてもここで更新されてしまったのでした。

OnOpenDocument、InitialUpdateFrameもおおもとはCWinApp::OnOpenRecentFileなので

CWinApp::OnOpenRecentFileを下記のようにオーバーライドして実現しました。

BOOL CViewerApp::OnOpenRecentFile(UINT nID)
{
m_bRecentFile = CWinApp::OnOpenRecentFile(nID);

CMainFrame* pFrm = (CMainFrame *)AfxGetMainWnd();
ASSERT( pFrm );
ASSERT( pFrm->GetTreeView() );
pFrm->GetTreeView()->SelectRoot();

return m_bRecentFile;
}


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

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