MainFrmからCHtmlViewにアクセスについて – プログラミング – Home

通知
すべてクリア

[解決済] MainFrmからCHtmlViewにアクセスについて


若
 若
(@若)
ゲスト
結合: 22年前
投稿: 3
Topic starter  

はじめまして、
メインフレームからCHtmlView(CMyView)にアクセスして
Navigate2でベージを表示させようとすると不正な処理になってしまいます。
どのように記述すればよいのでしょうか?
おねがいします。

void CMainFrame::Test()
{
CMyView* pView=(CMyView*)GetActiveView();
pView->CMyView::Navigate2(_T(表示URL),NULL,NULL);
}


引用未解決
トピックタグ
dairygoods
 dairygoods
(@dairygoods)
ゲスト
結合: 23年前
投稿: 1421
 

> どのように記述すればよいのでしょうか?

記述方法に問題はありません。
GetActiveView()はちゃんとNULL以外の値を返していますか?


返信引用
ひろぴー
 ひろぴー
(@ひろぴー)
ゲスト
結合: 22年前
投稿: 182
 

マルチドキュメントアプリケーションですか?

マルチドキュメントの場合はメインフレームがCMDIFrameWndから派生され、GetActiveViewで
は必ずNULLが返ってきます。
GetActiveFrame()->GetActiveView()で取得出来ます。
その時はその子ウィンドウがCMyViewかどうか判断しなければいけません。


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

お返事ありがとうございます。

SDIのウインドウズエクスプローラ形式の雛形で、
CHtmlViewは、後から追加を行いました。
表示するのに、CSplitterWndを追加しています。

GetActiveView()はNULL以外でしたが、CHtmlView(CMyView)が
アクティブなViewではなかったようです。

CHtmlView(CMyView)をアクティブ(フォーカスをあわせる?)にすれば
よいのでしょうか?

その場合、どのようにすれば。。。。SetActiveView()?


返信引用
ひろぴー
 ひろぴー
(@ひろぴー)
ゲスト
結合: 22年前
投稿: 182
 

GetPane()で取得すればOKではないでしょうか?


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

GetPane()を使って、下記のようにしたら、上手くいきました。
自分の記述の仕方がベストか?、不安ではありますが。。。

質問に答えて頂いたみなさんありがとうございました。
こんごとも、よろしくお願いします。

void CMainFrame::Test()
{
CHtmlView *pView=(CHtmlView*)m_wndSplitter1.GetPane(1,0);
pView->CMyView::Navigate2(_T(表示URL),NULL,NULL);
}

//wndSplitter1←追加したCSplitterWndです。


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

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