スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

--/--/-- | スポンサー広告  TOP

MFC SDI/MDIから表示したダイアログ中のコントロールにビューを割り付ける。

SDI/MDI中からダイアログ(CDialog)を表示した場合は、前回の手順ではアサートしてしまいます。ビューがフレームウィンドウと結びつかずに表示されているために起こる問題で、今回はフレームウィンドウからビューを開いてみましょう。

(1)ダイアログにコントロールを作成する。
リソースエディタで、「static text」で表示したい範囲を指定したコントロールを貼り付ける。
仮に、IDC_STATIC_FRAMEとします。

(2)コントロールに変数を割り付ける。
先ほど作成したコントロールに、コントロール変数を割り付けます。
仮に、ViewFrameとします。

(3)CHtmlViewをコントロールに割り付ける。

#include "afxpriv.h"
#include "afxhtml.h"

OnInitDialogの最後のほうで処理します。

BOOL CDialogInViewDlg::OnInitDialog()
{
CDialog::OnInitDialog();

: OnInitDialogの処理

// 表示フレームの表示範囲を得る。
CRect rect;
ViewFrame.GetWindowRect( &rect );
ScreenToClient( &rect );

// 表示範囲のフレームウィンドウの作成
CFrameWnd* pFrame = static_cast< CFrameWnd* >( RUNTIME_CLASS(CFrameWnd)->CreateObject() );
pFrame->Create( NULL, NULL, WS_VISIBLE|WS_CHILD, rect, this, NULL, 0, NULL );

// フレームウィンドウにビューを結びつける。
CCreateContext context;
context.m_pNewViewClass = RUNTIME_CLASS(CHtmlView);
CHtmlView* pNewView = (CHtmlView*)( pFrame->CreateView(&context) );

// ビューが作成できた?
if( pNewView != NULL ) {
// ビューを初期化する。
pNewView->ShowWindow(SW_SHOW);
pNewView->OnInitialUpdate();
pFrame->SetActiveView(pNewView);
pFrame->RecalcLayout();

// googleのホームページを表示します。
pNewView->Navigate(_T("www.google.co.jp"));
}

return TRUE; // フォーカスをコントロールに設定した場合を除き、TRUE を返します。
}

何かの役に立ったら幸いです。
もし役に立ったら、コメントか拍手をお願いします。
でわでわ。

2008/06/18 | プログラミングCOMMENT(0)TRACKBACK(0)  TOP

コメント

コメントの投稿



管理者にだけ表示を許可する

 | BLOG TOP | 
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。