关于CHtmlView的一个问题,请指教!

来源:百度知道 编辑:UC知道 时间:2024/07/03 15:26:39
我打算在对话框中用CHtmlView类显示HTML页面,于是定义了一个全局的CHtmlView对象m_htmlview,在对话框的OnCreat()函数中创建调用CHtmlView::Create().
部分代码:
CHtmlView m_htmlview;
.......
int CMFCTest2Dlg::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
if (CDialog::OnCreate(lpCreateStruct) == -1)
return -1;

// TODO: Add your specialized creation code here
const CRect rect(0,0,500,500);

m_htmlview.Create(NULL,_T("LIULANQI"),WS_CHILD | WS_VISIBLE,rect,this,AFX_IDW_PANE_FIRST);
return 0;
}

但是编译出现错误:
E:\PROGRAM FILES\MICROSOFT VISUAL STUDIO\MYPROJECTS\MFCTest2\MFCTest2Dlg.cpp(19) : error C2248: 'CHtmlView::CHtmlView' : cannot access protected member declared in class 'CHtmlView'
e:\program files\microsoft visual studio\vc98\mfc\include\afxhtml.h(54) : see declaration of 'CHtmlView::CHtmlView'
Error executing cl.exe.

MFCTest2.exe - 1 error(s),

CHtmlView::OnInitialUpdate();只能这样初始化,
调用这个函数来使用:
LoadFromResource(IDR_HTML1);加载一个现有的资源.
Navigate2(_T("http://www.msdn.microsoft.com/vstudio/"),NULL,NULL);手动写网址.

好像这个类不能用在对话框上!!!!!你试试吧.

CHtmlView因为涉及到Document-View模型,设计为不允许直接构造其实例,但是我们还是可以通过CRuntimeClass来创建它的,代码如下:

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

CRect rcWnd;
CWnd* pHolder = GetDlgItem(IDC_WEBBROWSER);
pHolder->GetWindowRect(&rcWnd);
ScreenToClient(&rcWnd);
pHolder->DestroyWindow();

CRuntimeClass* clazz = RUNTIME_CLASS(CHtmlView);
m_pWebBrowser = (CHtmlView*)clazz->CreateObject();

m_pWebBrowser->Create(NULL, NULL, WS_CHILD|WS_VISIBLE, rcWnd, this, IDC_WEBBROWSER);
m_pWebBrowser->Navigate(TEXT("ht