请教用CHtmlView视图时,能否交替显示网页和文本框

nongfuxu 2014-02-05 07:10:14
请教,使用CHtmlView视图后,
能不能由工具条控制,使它既可以显示百度地图网页,又可以切换到平常桌面应用程序中常见的文本编辑框、列表等。
若是可以实现的话,请教怎么构思程序框架结构。
...全文
123 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
nongfuxu 2014-02-06
  • 打赏
  • 举报
回复
引用
创建两个view,一个CHtmlView,一个CFormView,根据条件显示不同的view
嗯,我就是想这样做。只是不知道在哪里插入 视图切换代码。 比方在工具条上有二个互斥按键,在响应函数中怎么进行“视图切换”
sryteawrt 2014-02-06
  • 打赏
  • 举报
回复
这个不是很轻了
worldy 2014-02-06
  • 打赏
  • 举报
回复
1,应该就是这样 2,参考下面例子
h文件
#pragma once

#ifdef _WIN32_WCE
#error "Windows CE 不支持 CMDIChildWnd。"
#endif 

// 带有拆分器的 CxChildFrameX 框架

class CxViewA : public CView
{
	DECLARE_DYNCREATE(CxViewA)

protected:
	CxViewA();           // 动态创建所使用的受保护的构造函数
	virtual ~CxViewA();

public:
	virtual void OnDraw(CDC* pDC);      // 重写以绘制该视图
#ifdef _DEBUG
	virtual void AssertValid() const;
#ifndef _WIN32_WCE
	virtual void Dump(CDumpContext& dc) const;
#endif
#endif

protected:
	DECLARE_MESSAGE_MAP()
};

class CxViewB : public CView
{
	DECLARE_DYNCREATE(CxViewB)

protected:
	CxViewB();           // 动态创建所使用的受保护的构造函数
	virtual ~CxViewB();

public:
	virtual void OnDraw(CDC* pDC);      // 重写以绘制该视图
#ifdef _DEBUG
	virtual void AssertValid() const;
#ifndef _WIN32_WCE
	virtual void Dump(CDumpContext& dc) const;
#endif
#endif

protected:
	DECLARE_MESSAGE_MAP()
};


class CxChildFrameX : public CMDIChildWnd
{
	DECLARE_DYNCREATE(CxChildFrameX)
public:
	CxChildFrameX();           // 动态创建所使用的受保护的构造函数
	virtual ~CxChildFrameX();

protected:
	CSplitterWnd m_wndSplitter;

protected:
	virtual BOOL OnCreateClient(LPCREATESTRUCT lpcs, CCreateContext* pContext);

	DECLARE_MESSAGE_MAP()
};

cpp文件
// xChildFrameX.cpp : 实现文件
//

#include "stdafx.h"
#include "OpenCV_MFC.h"
#include "xChildFrameX.h"

// CxViewA

IMPLEMENT_DYNCREATE(CxViewA, CView)

CxViewA::CxViewA()
{

}

CxViewA::~CxViewA()
{
}

BEGIN_MESSAGE_MAP(CxViewA, CView)
END_MESSAGE_MAP()


// CxViewA 绘图

void CxViewA::OnDraw(CDC* pDC)
{
	CDocument* pDoc = GetDocument();
	// TODO: 在此添加绘制代码

	CRect rx;
	GetClientRect(&rx);
	CString cs="This is ViewA";
	CSize sz=pDC->GetTextExtent(cs);
	pDC->TextOut((rx.Width()-sz.cx)/2,(rx.Height()-sz.cy)/2,cs);
}


// CxViewA 诊断

#ifdef _DEBUG
void CxViewA::AssertValid() const
{
	CView::AssertValid();
}

#ifndef _WIN32_WCE
void CxViewA::Dump(CDumpContext& dc) const
{
	CView::Dump(dc);
}
#endif
#endif

// CxViewB

IMPLEMENT_DYNCREATE(CxViewB, CView)

CxViewB::CxViewB()
{

}

CxViewB::~CxViewB()
{
}

BEGIN_MESSAGE_MAP(CxViewB, CView)
END_MESSAGE_MAP()


// CxViewB 绘图

void CxViewB::OnDraw(CDC* pDC)
{
	CDocument* pDoc = GetDocument();
	// TODO: 在此添加绘制代码

	CRect rx;
	GetClientRect(&rx);
	CString cs="This is ViewB";
	CSize sz=pDC->GetTextExtent(cs);
	pDC->TextOut((rx.Width()-sz.cx)/2,(rx.Height()-sz.cy)/2,cs);

}


// CxViewB 诊断

#ifdef _DEBUG
void CxViewB::AssertValid() const
{
	CView::AssertValid();
}

#ifndef _WIN32_WCE
void CxViewB::Dump(CDumpContext& dc) const
{
	CView::Dump(dc);
}
#endif
#endif //_DEBUG
// CxViewB 消息处理程序

// CxChildFrameX

IMPLEMENT_DYNCREATE(CxChildFrameX, CMDIChildWnd)

CxChildFrameX::CxChildFrameX()
{

}

CxChildFrameX::~CxChildFrameX()
{
}

BOOL CxChildFrameX::OnCreateClient(LPCREATESTRUCT /*lpcs*/, CCreateContext* pContext)
{
	//return m_wndSplitter.Create(this,
	//	2, 2,       // TODO: 调整行数和列数
	//	CSize(10, 10),  // TODO: 调整最小窗格大小
	//	pContext);
	m_wndSplitter.CreateStatic(this,2,1);
	m_wndSplitter.SetRowInfo(0,300,100);
	m_wndSplitter.CreateView(0,0,RUNTIME_CLASS(CxViewA),CSize(0,200),pContext);
	m_wndSplitter.CreateView(1,0,RUNTIME_CLASS(CxViewB),CSize(0,0),pContext);
	return TRUE;
}

BEGIN_MESSAGE_MAP(CxChildFrameX, CMDIChildWnd)
END_MESSAGE_MAP()


// CxChildFrameX 消息处理程序
nongfuxu 2014-02-06
  • 打赏
  • 举报
回复
感谢回复。 您说的是不是在框架窗体的同一个位置区域上,先同时生成二个View,然后用SetWindowPos()来具体决定显示哪一个吗? 如果用了分割窗,左边是TREE控件,右边是这二个VIEW,那么在框架生成上述二个VIEW,怎样实现(可以实现嘛)?
worldy 2014-02-06
  • 打赏
  • 举报
回复
SetWindowPos
worldy 2014-02-05
  • 打赏
  • 举报
回复
另外,你还可以使用一个本地简单的html代码其中含文本输入标签用于输入,在不同的时候加载本地文件或远程文件,这样只需要HtmlView即可
worldy 2014-02-05
  • 打赏
  • 举报
回复
窗口中创建一个HTMLView,一个普通View根据需要将不同的View置前,应该就是你要的效果
oyljerry 2014-02-05
  • 打赏
  • 举报
回复
创建两个view,一个CHtmlView,一个CFormView,根据条件显示不同的view
nongfuxu 2014-02-05
  • 打赏
  • 举报
回复
现在用VC向导生成的程序中,显示网页和代码如下: IMPLEMENT_DYNCREATE(CTEST5View, CHtmlView) void CTEST5View::OnInitialUpdate() //CHtmlView类派生 { CHtmlView::OnInitialUpdate(); Navigate2(_T("http://www.msdn.microsoft.com/visualc/"),NULL,NULL); } 请教: 怎样修改能实现“交替显示网页和文本框”?

16,472

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧