はじめまして、
メインフレームからCHtmlView(CMyView)にアクセスして
Navigate2でベージを表示させようとすると不正な処理になってしまいます。
どのように記述すればよいのでしょうか?
おねがいします。
void CMainFrame::Test()
{
CMyView* pView=(CMyView*)GetActiveView();
pView->CMyView::Navigate2(_T(表示URL),NULL,NULL);
}
> どのように記述すればよいのでしょうか?
記述方法に問題はありません。
GetActiveView()はちゃんとNULL以外の値を返していますか?
マルチドキュメントアプリケーションですか?
マルチドキュメントの場合はメインフレームがCMDIFrameWndから派生され、GetActiveViewで
は必ずNULLが返ってきます。
GetActiveFrame()->GetActiveView()で取得出来ます。
その時はその子ウィンドウがCMyViewかどうか判断しなければいけません。
お返事ありがとうございます。
SDIのウインドウズエクスプローラ形式の雛形で、
CHtmlViewは、後から追加を行いました。
表示するのに、CSplitterWndを追加しています。
GetActiveView()はNULL以外でしたが、CHtmlView(CMyView)が
アクティブなViewではなかったようです。
CHtmlView(CMyView)をアクティブ(フォーカスをあわせる?)にすれば
よいのでしょうか?
その場合、どのようにすれば。。。。SetActiveView()?
GetPane()で取得すればOKではないでしょうか?
GetPane()を使って、下記のようにしたら、上手くいきました。
自分の記述の仕方がベストか?、不安ではありますが。。。
質問に答えて頂いたみなさんありがとうございました。
こんごとも、よろしくお願いします。
void CMainFrame::Test()
{
CHtmlView *pView=(CHtmlView*)m_wndSplitter1.GetPane(1,0);
pView->CMyView::Navigate2(_T(表示URL),NULL,NULL);
}
//wndSplitter1←追加したCSplitterWndです。