MFC单文档 可以切换视图类吗?
我现在创建了一个基于CFormView的类,加上新建工程时自动生成的那个View类(也是基于CFormView)共有两个视图类,能通过单击按钮来切换这两个类来达到切换当前...
我现在创建了一个基于CFormView的类,加上新建工程时自动生成的那个View类(也是基于CFormView)共有两个视图类, 能通过单击按钮来切换这两个类来达到切换当前窗口显示的视图的效果吗? 怎么做呢?
展开
2个回答
展开全部
你有两个类,CXXXView1类和CXXXView2类,实现两个切换切换,这样:假设你的按钮在CXXXView1类对应的界面上。在CXXXView1类中增加公有成员变量CXXXView2 mView2Dlg;
在按钮对应的消息响应函数中 写:
static i=0;
i++;
if(i == 1)
{
mView2Dlg.ShowWindow(TRUE);
this->ShowWindow(FALSE);
}
else
{
mView2Dlg.ShowWindowFALSE);
this->ShowWindow(TRUE);
}
在CXXXView1类要创建CXXXView2的非模态窗口对讲。你可再查查模态窗口和非模态窗口。
在按钮对应的消息响应函数中 写:
static i=0;
i++;
if(i == 1)
{
mView2Dlg.ShowWindow(TRUE);
this->ShowWindow(FALSE);
}
else
{
mView2Dlg.ShowWindowFALSE);
this->ShowWindow(TRUE);
}
在CXXXView1类要创建CXXXView2的非模态窗口对讲。你可再查查模态窗口和非模态窗口。
追问
按照你说的操作 添加变量后编译出错 有什么地方不对吗?
error C2248: “CceshiView2::CceshiView2”: 无法访问 protected 成员(在“CceshiView2”类中声明)
追答
有点没明白,在ceshiView2.h中#include “ceshiView1.h”
然后再CceshiView2类的声明中(在ceshiView2.h中)添加公有成员变量。
public :
CceshiView1 mCeshi1Dlg;
可能你添加的位置不正确,默认的成员函数是私有的。你再试试。
展开全部
首先你要理解MFC的MVC(Model-View-Controller)模式,你的问题就迎刃而解了。
在MFC应用中,对应上面三个角色的类分别是Document-View-View兼任。
View是Document数据的呈现,一个Document可以对应多个View。
理解了这些,再看你的问题:
要切换两个View类,只需要取得Document类,然后调用它的GetView/GetActiveView/FindView/FindNextView(具体函数名记不清了,请查MSDN)等API来遍历或查找特定的View了。
在MFC应用中,对应上面三个角色的类分别是Document-View-View兼任。
View是Document数据的呈现,一个Document可以对应多个View。
理解了这些,再看你的问题:
要切换两个View类,只需要取得Document类,然后调用它的GetView/GetActiveView/FindView/FindNextView(具体函数名记不清了,请查MSDN)等API来遍历或查找特定的View了。
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询