vc2005怎么使用使用chtmlview在普通对话框显示网页? vc2005的mfc对话框.我从CHtmlView派生了一个自己的类CMyWeb,然后想在对话框创建一个区域显示一个网页,要怎么写? 直接m_myweb.create吗? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 在InitUpdate 里 调用Navigate2()就 可以了。 可以在对话框中加一个CFrameWnd,后面的处理同一般的单文档框架 我不是不懂Navigate2,我是不懂如何生成控件窗口呀 nage htmlview已经封装了。 你可能理解错我的意思了.我是一个普通mfc对话框工程,然后,新加一个类,派生自chtmlview的,然后通过对话框上一个static控件啥的,把web展现到那儿~`` 你把CHtmlView当控件用就ok了。 我也是这样想的;可是试了create好象不行;有人说CHtmlView不能用在对话框上 http://hi.baidu.com/koko200147/blog/item/04df41cf5ebef83af9dc6107.html CView当做控件使用必须做如何修改View和Control的区别(如何在对话框上使用CView类) CView继承类,和其他窗口类的区别,很重要的就是对CDocument类和CFrameWnd类的操作,而其中,涉及CDocument类的操作,都进行了有效性判断(m_pDocument != NULL),CView类初始化的时候,m_pDocument = NULL,因此并不影响CView类作为控件的使用。涉及CFrame类的操作,有这么几个地方: 第一个地方:CView::OnDestroy()。void CView::OnDestroy(){ CFrameWnd* pFrame = GetParentFrame(); if (pFrame != NULL && pFrame->GetActiveView() == this) pFrame->SetActiveView(NULL); // deactivate during death CWnd::OnDestroy();} 第二个地方:CView::OnActivateFrame()。void CView::OnActivateFrame(UINT /*nState*/, CFrameWnd* /*pFrameWnd*/){} 这里,其实是空的,在CView继承类中,只有CFormView类继承了这个虚函数void CFormView::OnActivateFrame(UINT nState, CFrameWnd* /*pFrameWnd*/){ if (nState == WA_INACTIVE) SaveFocusControl(); // save focus when frame loses activation} 实际上都不需要真的CFrame指针,对CView类作为控件使用没有障碍。 第三个地方:CView::OnMouseActivate()。int CView::OnMouseActivate(CWnd* pDesktopWnd, UINT nHitTest, UINT message){ int nResult = CWnd::OnMouseActivate(pDesktopWnd, nHitTest, message); if (nResult == MA_NOACTIVATE || nResult == MA_NOACTIVATEANDEAT) return nResult; // frame does not want to activate CFrameWnd* pParentFrame = GetParentFrame(); if (pParentFrame != NULL) { // eat it if this will cause activation ASSERT(pParentFrame == pDesktopWnd || pDesktopWnd->IsChild(pParentFrame)); // either re-activate the current view, or set this view to be active CView* pView = pParentFrame->GetActiveView(); HWND hWndFocus = ::GetFocus(); if (pView == this && m_hWnd != hWndFocus && !::IsChild(m_hWnd, hWndFocus)) { // re-activate this view OnActivateView(TRUE, this, this); } else { // activate this view pParentFrame->SetActiveView(this); } } return nResult;} 另外,在CView::PostNcDestroy(),实现了CView类的自我销毁,这是因为CView类是可以动态生成的(DECLARE_DYNCREATE/IMPLEMENT_DYNCREATE)。// self destructionvoid CView::PostNcDestroy(){ // default for views is to allocate them on the heap // the default post-cleanup is to 'delete this'. // never explicitly call 'delete' on a view delete this; 基本上,修改了CView继承类的这几个地方,直接返回不要调用基类相应的成员函数,就可以在对话框上使用。 下面举例,用向导生成对话框应用程序,对话框类为CMyDigalog。 从CHTMLView类继承一个CHTMLCtrl类,建立相应的消息处理函数并修改以下几个地方:// CHTMLCtrl 消息处理程序int CHTMLCtrl::OnMouseActivate(CWnd* pDesktopWnd, UINT nHitTest, UINT message){ // TODO: 在此添加消息处理程序代码和/或调用默认值 return CWnd::OnMouseActivate(pDesktopWnd, nHitTest, message); //return CHtmlView::OnMouseActivate(pDesktopWnd, nHitTest, message);}void CHTMLCtrl::OnDestroy(){ //CHtmlView::OnDestroy(); // TODO: 在此处添加消息处理程序代码 CWnd::OnDestroy();}void CHTMLCtrl::PostNcDestroy(){ // TODO: 在此添加专用代码和/或调用基类 //CHtmlView::PostNcDestroy();}void CHTMLCtrl::OnActivateFrame(UINT nState, CFrameWnd* pDeactivateFrame){ // TODO: 在此添加专用代码和/或调用基类 //CHtmlView::OnActivateFrame(nState, pDeactivateFrame);} 还应注意,默认的从CView继承的类,其构造函数和析构函数是protected的,需要修改成public。 还应注意,默认的从CView继承的类,其构造函数和析构函数是protected的,需要修改成public。 socket编程怎么把输入的ipv6地址进行赋值连接? 高手请指导 怎样将一个单文档程序 置顶 如何用SDK创建工具栏和状态栏? 很简单的问题(在线等....) 请问什么是目标关键色啊?谢谢,新手问题 请问拼音输入法怎么做出来的?哪里有相关资料? 求教:我学WinInet,编译的时候出现HINTERNET类型没定义,请教是否要加特定的头文件或其他问题 帮忙看一看拉 监视文件将要被打开或者已经打开的方法 请问南京擎天科技和南京联创科技哪个对自己发展好点 CView 输入文字并可以设置底纹???
我不是不懂Navigate2,我是不懂如何生成控件窗口呀
你可能理解错我的意思了.
我是一个普通mfc对话框工程,然后,新加一个类,派生自chtmlview的,然后通过对话框上一个static控件啥的,把web展现到那儿~``
我也是这样想的;可是试了create好象不行;
有人说CHtmlView不能用在对话框上
另外,在CView::PostNcDestroy(),实现了CView类的自我销毁,这是因为CView类是可以动态生成的(DECLARE_DYNCREATE/IMPLEMENT_DYNCREATE)。// self destructionvoid CView::PostNcDestroy(){ // default for views is to allocate them on the heap // the default post-cleanup is to 'delete this'. // never explicitly call 'delete' on a view delete this;
基本上,修改了CView继承类的这几个地方,直接返回不要调用基类相应的成员函数,就可以在对话框上使用。 下面举例,用向导生成对话框应用程序,对话框类为CMyDigalog。 从CHTMLView类继承一个CHTMLCtrl类,建立相应的消息处理函数并修改以下几个地方:// CHTMLCtrl 消息处理程序int CHTMLCtrl::OnMouseActivate(CWnd* pDesktopWnd, UINT nHitTest, UINT message){ // TODO: 在此添加消息处理程序代码和/或调用默认值 return CWnd::OnMouseActivate(pDesktopWnd, nHitTest, message); //return CHtmlView::OnMouseActivate(pDesktopWnd, nHitTest, message);}void CHTMLCtrl::OnDestroy(){ //CHtmlView::OnDestroy(); // TODO: 在此处添加消息处理程序代码 CWnd::OnDestroy();}void CHTMLCtrl::PostNcDestroy(){ // TODO: 在此添加专用代码和/或调用基类 //CHtmlView::PostNcDestroy();}void CHTMLCtrl::OnActivateFrame(UINT nState, CFrameWnd* pDeactivateFrame){ // TODO: 在此添加专用代码和/或调用基类 //CHtmlView::OnActivateFrame(nState, pDeactivateFrame);} 还应注意,默认的从CView继承的类,其构造函数和析构函数是protected的,需要修改成public。 还应注意,默认的从CView继承的类,其构造函数和析构函数是protected的,需要修改成public。