网站导航免费论文 原创论文 论文搜索 原创论文 网学软件 学术大家 资料中心 会员中心 问题解答 原创论文 论文素材 设计下载 最新论文 下载排行 论文上传 在线投稿 联系我们
返回网学首页
网学联系
最新论文 推荐专题 热门论文 素材专题
当前位置: 网学 > 编程文档 > VC++ > 正文
文档与视图的建立和关联
来源:Http://myeducs.cn 联系QQ:点击这里给我发消息 作者: 用户投稿 来源: 网络 发布时间: 12/10/15
下载{$ArticleTitle}原创论文样式

作者:王家文  湖南大学计算机通信系  

本文讨论一下单文档与多视的问题,主要介绍一下笔者在学习VC++6.0过程中探索出的一些个人经验,并给出了实现它们的的主要程序框架。

一.建立文档与视图:

在Projects选MFC Appwizard(exe),键入工程名,点ok后选单文档,选择默认值,在第四步时,在Advanced…里的Window Styles的Use split window前打√。

二.文档多视:

当我们需要从不同的角度来看单文档的内容时,这就要我们实现多视了,多视有两种实

现方案:静态的和动态的。这就根据不同的需要来实现了。动态的方法一般在程序中已经实现了,自动生成的源代码:

BOOL CMainFrame::OnCreateClient(LPCREATESTRUCT /*lpcs*/,

       CCreateContext* pContext)

{

       return m_wndSplitter.Create(this,

              2, 2,               // TODO: adjust the number of rows, columns

              CSize(10, 10),      // TODO: adjust the minimum pane size

              pContext);

}

而静态的方法却麻烦一点,下面我详细介绍一下:

首先我们先插入一个类:class CMyView : public ClistView

在MainFrm.cpp加入#include "MyView.h"

在MainFrm.h中声明CSplitterWnd m_splitterWnd; //声明分隔器对象,已经自动生成了。

在函数CMainFrame::OnCreateClient里加入下面一些代码,只要把原有的代码删去。

If(!m_splitterWnd.CreateStatic(this,1,2,WS_CHILD | WS_VISIBLE))//一行两列

return false;//不成功就返回

else

{

m_splitterWnd.CreateView(0,1,RUNTIME_CLASS(CMyEditView),CSize(100,300),pContext);
m_splitterWnd.CreateView(0,0,RUNTIME_CLASS(CMyView),CSize(100,100),pContext);

// CmyEditView和CmyView是自己定义的视图类。
//CSize(100,300)是初始化时的大小
return TRUE;//成功的返回值

}

这样程序一旦执行就会把窗口分割成左右两部分。

但是有时我们需要实现这样的功能:一旦发出一个消息时,我要使其中的一个视图消失,研究一下,可以删去或者隐藏这个视图,相对应恢复时就要重建或者显示这个视图,具体的实现在后面再详解吧!

由于我们有时分割视图,不是很有规则的1*2,3*1,2*2等形式,而是在分割的视图里再分割,如图:

视图二CviewView2
视图一CviewView1

视图三CviewView3


声明一个分隔器对象:在MainFrm.h中声明CSplitterWnd m_splitterWnd1

代码为:
  m_wndSplitter1.CreateStatic( &m_wndSplitter,2, 1, WS_CHILD | WS_VISIBLE,
  m_wndSplitter.IdFromRowCol(0, 0));  // 创建各个视
  m_wndSplitter.CreateView(0, 1,RUNTIME_CLASS(CviewView1), CSize(0, 0), pContext);
  m_wndSplitter1.CreateView(0, 0,RUNTIME_CLASS(CviewView2), CSize(0, 0), pContext);
  m_wndSplitter1.CreateView(1, 0, RUNTIME_CLASS(CviewView3), CSize(0, 0), pContext);



如果使用自由定义的视图大小来实现呢?

       SIZE size;                              &nbs

网学推荐

免费论文

原创论文

浏览:
设为首页 | 加入收藏 | 论文首页 | 论文专题 | 设计下载 | 网学软件 | 论文模板 | 论文资源 | 程序设计 | 关于网学 | 站内搜索 | 网学留言 | 友情链接 | 资料中心
版权所有 QQ:3710167 邮箱:3710167@qq.com 网学网 [Myeducs.cn] 您电脑的分辨率是 像素
Copyright 2008-2015 myeducs.Cn www.myeducs.Cn All Rights Reserved
湘ICP备09003080号