?? chap8_1.htm
字號:
<html>
<head>
<title>8.1多文檔界面窗口</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>
<div align="center">
<center>
</center>
</div>
<p align="CENTER"><b><font color="red" ><font face="Times New Roman">8.1</font>多文檔界面窗口</font></b></p>
<p> <font face="Times New Roman" size="4"></font><font face="Times New Roman" > MDI</font>
應用程序是另一類重要的文檔視結構程序。它的特點是:用戶一次可以打開多個文檔,每個文檔對應不同的窗口;主窗口的菜單會自動隨著當前活動的子窗口的變化而變化;可以對子窗口進行層疊、平鋪等各種操作;子窗口可以在<font face="Times New Roman" >MDI</font>
主窗口區域內定位、改變大小、最大化和最小化,當最大化子窗口時,它將占滿<font face="Times New Roman" >MDI</font>
主窗口的全部客戶區。<font face="Times New Roman" >MDI</font> 不僅可以在同一時間內同時打開多個文檔,還可以為同一文檔打開多個視圖。在<font face="Times New Roman" >Windows</font>
菜單下選擇<font face="Times New Roman" >New</font> ,就為當前活動文檔打開一個新的子窗口。</p>
<p align="JUSTIFY"> <font face="Times New Roman" ></font> 從程序員角度看,每個<font face="Times New Roman" >MDI</font>
應用程序必須有一個<font face="Times New Roman" >CMDIFrameWnd</font> 或其派生類的實例,這個窗口稱作<font face="Times New Roman" >MDI</font>
框架窗口。<font face="Times New Roman" >CMDIFrameWnd</font> 是<font face="Times New Roman" >CFrameWnd</font>
的派生類,它除了擁有<font face="Times New Roman" >CFrameWnd</font> 框架窗口類的全部特性外,還具有以下與<font face="Times New Roman" >MDI</font>
相關的特性:</p>
<blockquote> <font face="Times New Roman" > </font>
<p align="JUSTIFY"> 與<font face="Times New Roman" >SDI</font>
不同,主框架窗口并不直接與一個文檔和視圖相關聯。<font face="Times New Roman" >MDI</font>
框架窗口擁有<font face="Times New Roman" >MDICLIENT</font> (<font face="Times New Roman" >MDI</font>
客戶窗口),在顯示或隱藏控制條(包括工具條、狀態欄、對話條)時,重新定位該子窗口。</p>
<p><font face="Times New Roman" >MDI</font> 客戶窗口是<font face="Times New Roman" >MDI</font>
子窗口的直接父窗口,它負責管理主框架窗口的客戶區以及創建子窗口。每個<font face="Times New Roman" >MDI</font>
主框架窗口都有且只有一個<font face="Times New Roman" >MDI</font> 客戶窗口。</p>
<p><font face="Times New Roman" >MDI</font> 主框架窗口、客戶窗口和子窗口的關系如下圖所示:</p>
<p align="CENTER"><img src="T8_1.gif" alt="T8_1.tif (207392 bytes)" width="574" height="301"></p>
<p align="CENTER"> 圖<font face="Times New Roman" >8-1 MDI</font>
主框架窗口、客戶窗口和子窗口</p>
<p><font face="Times New Roman" >MDI</font> 子窗口是<font face="Times New Roman" >CMDIChildWnd</font>
或其派生類的實例,<font face="Times New Roman" >CMDIChildWnd</font>
是<font face="Times New Roman" >CFrameWnd</font> 的派生類,用于容納視圖和文檔,它相當于<font face="Times New Roman" >SDI</font>
下的主框架窗口。每打開一個文檔,框架就自動為文檔創建一個<font face="Times New Roman" >MDI</font>
子窗口。一個<font face="Times New Roman" >MDI</font> 應用程序負責動態的創建和刪除<font face="Times New Roman" >MDI</font>
子窗口。在任何時刻,最多只有一個子窗口是活動的<font face="Times New Roman" >(</font>
窗口標題欄顏色呈高亮顯示<font face="Times New Roman" >)</font> 。<font face="Times New Roman" >MDI</font>
框架窗口始終與當前活動子窗口相關聯,命令消息在傳給<font face="Times New Roman" >MDI</font>
框架窗口之前首先分派給當前活動子窗口。</p>
<p> 在沒有任何活動的<font face="Times New Roman" >MDI</font> 子窗口時,<font face="Times New Roman" >MDI</font>
框架窗口可以擁有自己的缺省菜單。當有活動子窗口時,<font face="Times New Roman" >MDI</font>
框架窗口的菜單條會自動被子窗口的菜單所替代。框架會自動監視當前活動的子窗口類型,并相應的改變主窗口的菜單。比如,在<font face="Times New Roman" >Visual
Studio</font> 中,當選擇對話框資源編輯窗口或源程序窗口時,菜單會有所不同。但是,對于程序員來說,只需要在<font face="Times New Roman" >InitInstance</font>
中注冊文檔時指定每一類子窗口(嚴格的講是文檔)所使用的菜單,而不必顯式的通過調用函數去改變主框架窗口的菜單,因為框架會自動完成這一任務。</p>
<p><font face="Times New Roman" >MDI</font> 框架窗口為層疊、平鋪、排列子窗口和新建子窗口等一些標準窗口操作提供了缺省的菜單響應。在響應新建子窗口命令時,框架調用<font face="Times New Roman" >CDocTemplate::CreateNewFrame()</font>
為當前活動文檔創建一個子窗口。<font face="Times New Roman" >CreateNewFrame()</font>
不僅創建子窗口,還創建與文檔相對應的視圖。</p>
</blockquote>
<p> 下面,我們結合一個繪圖程序例子,介紹多文檔界面技術。在此之前,我們首先要介紹一下如何在<font face="Times New Roman" >Windows</font>
中繪圖以及<font face="Times New Roman" >Windows</font> 的圖形設備接口(<font face="Times New Roman" >GDI</font>
)。</p>
<div align="center">
<center>
<table border="0" cellpadding="0" cellspacing="0" width="615">
<tr>
<td><a href="chap8.htm">上一頁</a></td>
<td>
<p align="right"><a href="chap8_2.htm">下一頁</a>
</td>
</tr>
</table>
<p><a href="http://www.cpcw.com">電腦報首頁</a> <a href="../../index.htm">網絡學院首頁</a></p>
</center>
</div>
<font size="5">
<hr noshade color="#3973DE" size="1">
</font>
<p align="center"><font size="5"></font><font size="2" color="#000000">本教程由<a href="http://vcdynasty.yeah.net">Visual
C++王朝(Where programmers come together)</a>協助制作<br>
未經許可,請勿以任何形式復制</font>
</td>
</tr>
</table>
</center>
</div>
</body>
</html>
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -