⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 chap8_5.htm

📁 很不错的一本关于VC的书
💻 HTM
字号:
<html><head><title>8.5分割视图</title><meta http-equiv="Content-Type" content="text/html; charset=gb2312"><meta name="GENERATOR" content="Microsoft FrontPage 3.0"><link rel="stylesheet" href="../../../cpcw.css"></head><body link="#3973DE" alink="#3973DE" background="../../bg.gif"><div align="center"><center>    <table width="85%" border="0">      <tr bgcolor="#FFFFFF">         <td>           <p align="CENTER"><font color="red"><b>8.5分割视图</b></font></p>          <p>   分割窗口将窗口分成几个部分,每个部分通常代表一个视图(但也可以是具有子窗口标识的CWnd对象),又称窗格。如图8-8所示。如果想在一个窗口里面观察文档的不同部分,或者是在一个窗口里用不同类型的视图(比如用图表和表格)观察同一个文档,那么采用分割窗口是非常方便的。许多优秀的软件都采用了分割窗口技术,因此我们有必要掌握分割窗口的用法。</p>          <p align="center"> <img src="T8_8.gif" alt="T8_8.tif (313144 bytes)" width="546" height="345"></p>          <p align="center"> 图8-8             分割窗口</p>          <p> 分割窗口分为两类:动态分割窗口和静态分割窗口。</p>          <p> 动态分割窗口是指:用户可以动态的分割和除去分割窗口,分割窗口会创建和删除相应的窗格。Microsoft Word就是使用动态分割窗口的例子,这是一种最常用的分割窗口。动态分割窗口最多可以有2行&acute;             2列个窗格。</p>          <p> 静态分割窗口是指:在窗口创建时,分割窗口的窗格就已经创建好了,且窗格的数量和顺序不会改变。窗格为一个分割条所分割,用户可以拖动分割条调整相应的窗格的大小。如图8-9,Visual             Studio的图标编辑器就是静态分割窗口的例子。在编辑器的左边窗格,显示图标的缩微图像,在右边显示图标的编辑窗口,可以拖动中间的分割条调整两个窗格的大小。静态分割窗口最多可以有16行&acute;             16列的窗格。</p>          <p align="center"> <img src="T8_9.gif" alt="T8_9.tif (295722 bytes)" width="484" height="313"></p>          <p align="center"> 图8-9             图标编辑器—静态分割窗口的例子</p>          <p> 这里我们只介绍动态分割窗口的使用,有关静态分割窗口的用法,读者可以参考Visual             C++的例子VIEWEX,它在SAMPLES\MFC\GENERAL             \VIEWEX目录下。</p>          <p> 要使文档视结构程序支持动态分割窗口,可以有三种方法:</p>          <p> 1.在用AppWizard创建窗口时指定分割窗口风格:</p>          <p> 在MFC             AppWizard Step 4 of 6对话框中,点Advanced按钮。弹出Advanced             Options对话框,选择Window             Styles标签页。如图8-10,选中该页的Use             Split Window检查框。这样生成的应用程序就自动支持分割窗口功能。</p>          <p align="center"> <img src="T8_10.gif" alt="T8_10.tif (323220 bytes)" width="465" height="488"></p>          <p align="center"> 图8-10             Window Styles设置</p>          <p> 如果应用程序已经生成,采用这种方法就不合适了。此时,可以使用下面的两种方法:</p>          <p> 2.使用Component             Gallery为已经生成的应用程序增加分割窗口功能:</p>          <p> 打开相应的工程文件。选择Project-Add             To Project-Components and controls菜单,弹出</p>          <p> Components and controls Gallery对话框。双击Developer             Studio Components目录,从该目录下选择split             Bars控件。Visual             C++提示split             Bar对话框,对话框内有三个选项:Horizontal,Vertical和Both,用于指定在水平方向、垂直方向还是两个方向都使用分割窗口。选择Both,点OK关闭Split             Bar对话框,此时Component             Gallery就将分割窗口功能添加到了Draw程序中。再点OK关闭Components             and controls Gallery对话框。然后浏览应用程序类,看有什么变化。</p>          <p> 在childfrm.h中,增加了以下内容:</p>                     <p>// Generated message map functions</p>          <p>protected:</p>          <p>CSplitterWnd m_wndSplitter;</p>          <p>virtual BOOL OnCreateClient(LPCREATESTRUCT lpcs, CCreateContext*             pContext);</p>                    <p>m_wndSplitter是一个CSplitterWnd类的对象。CSplitterWnd是MFC提供的一个类,它提供了窗格分割控制,以及能被所有同一行或列上的窗格共享的滚动条。这些行和列的值都是从0开始的整数,第一个窗格的行数和列数都为0。</p>          <p> 另外还重载了子框架窗口的OnCreateClient方法。在该函数内部,创建了分割窗口控制:</p>                     <p>BOOL CChildFrame::OnCreateClient(LPCREATESTRUCT lpcs, CCreateContext*             pContext)</p>          <p>{</p>          <p>// CG: The following block was added by the Split Bars component.</p>          <p>{</p>          <p>if (!m_wndSplitter.Create(this,</p>          <p>2, 2, // TODO: adjust the number of rows, columns</p>          <p>CSize(10, 10), // TODO: adjust the minimum pane size</p>          <p>pContext))</p>          <p>{</p>          <p>TRACE0(&quot;Failed to create split bar &quot;);</p>          <p>return FALSE; // failed to create</p>          <p>}</p>          <p>return TRUE;</p>          <p>}</p>          <p>}</p>                    <p>CSplitterWnd::Create方法带五个参数,第一个参数代表父窗口指针,第二个参数和第三个参数告诉CSplitterWnd要多少行、多少列的窗格,第四个参数是一个CSize类型的数据,用于指定窗格的最小大小。</p>          <p> 第三种方法是手工加入代码:</p>          <p> 在需要分割视图的框架窗口中加入一个CSplitterWnd类型的数据成员;用ClassWizard重载框架窗口的OnCreateClient方法,在OnCreateClient方法的实现中,加入上面的代码</p>          <div align="center">            <center>              <table border="0" cellpadding="0" cellspacing="0" width="615">                <tr>                   <td><a href="chap8_4.htm">上一页</a></td>                  <td>                    <p align="right"><a href="chap8_6.htm">下一页</a>                  </td>                </tr>              </table>              <p><a href="http://www.cpcw.com">电脑报首页</a> <a href="../../index.htm">网络学院首页</a>               </p>              </center>          </div>          <p>&nbsp;</p><hr noshade color="#3973DE" size="1">                    </td>      </tr>    </table>    </center></div></body></html>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -