MDI

多文檔界面

多文檔界面(MDI)應用程序使您能同時顯示多個文檔,每個文檔顯示在各自的窗口中。MDI應用程序中常有包含子菜單的“窗口”菜單項,用於在窗口或文檔之間進行切換。

傳輸質量指標


對於video測試中,MDI為媒體流丟失率和延遲的組合評價指標。
MDI(Media Delivery Index)媒體傳輸質量指標是由思科公司和IneoQuest共同提出的,對視頻流在IP網路傳輸質量進行評估的測量指標。作為IP視頻流傳輸質量測試的行業標準,MDI測量指標廣泛地應用於IPTV和IP有線數字電視網路質量評估和監測。
對IP視頻流的傳輸質量用RFC 4445MDI標識為:DF:MLR。
MDI包括了兩個參數:
Delay Factor(延遲因素,簡稱DF):該數值表明被測試視頻流的延遲和抖動狀況。DF的單位是毫秒(ms)。DF將視頻流抖動的變化換算為對視頻傳輸和解碼設備緩衝的需求。被測視頻流抖動越大,DF值越大。當網路設備和解碼器的緩衝區容納的視頻內容時間不小於被測視頻流DF讀數時,將不會出現視頻播放質量的下降。因為網路節點需要分配不小於DF值的緩衝用於平滑視頻流抖動,所以DF的最大值為視頻內容通過該網路節點的最小延遲。
Media Loss Rate(媒體丟包速率,簡稱MLR):MLR的單位是每秒的媒體封包丟失數量。該數值表明被測試視頻流的傳輸丟包速率。由於視頻信息的封包丟失將直接影響視頻播放質量,理想的IP視頻流傳輸要求MLR數值為零。因為具體的視頻播放設備對丟包可以通過視頻解碼中進行補償或者丟包重傳,在實際測試中MLR的閾值可以相應調整。
讀者可以從IETF網站下載RFC 4445 MDI的標準文檔。

模型驅動集成


MDI=Model Drive Integration,即模型驅動集成。
通過在企業IT軟體業務空間,對信息資源建立統一的數據模型,實現信息系統之間消息傳輸和會話內容格式的標準化和語義一致性,實現異構系統之間無縫集成。

定量氣霧裝置


MDI=metered dose inhaler,壓力式定量氣霧裝置。
一種將藥物定量,霧化后經口吸入肺內,治療哮喘等肺部疾病
MDI使用要點
1、打開保護蓋。
2、搖勻。
3、深呼氣。
4、按規定方向手持氣霧器,用嘴唇咬住噴嘴。
5、以適中的速度深吸氣,同時按動開關,此時釋放了一噴,繼續吸氣動作,確保藥物全部吸入體內。
6、屏住呼吸數秒鐘,確保藥物有足夠的時間沉積在氣道中。
7、移開氣霧器噴嘴,緩慢呼氣。
8、如需第二噴,請重複上述動作。
儲霧瓶
MDI對呼吸配合要求比較高,作為改進,可在噴霧口上套一個儲霧瓶(spacer),噴出的藥液在此得以緩衝,然後再吸入。
優點:霧滴速度降低,患者吸氣更從容。同時,吸入效果得到提升,口腔沉積量減少。
缺點:體積大;塑料瓶身可能產生靜電,吸引霧滴導致部分藥物損失。

程序控制模式


Manual Data Input 手動輸入程序控制模式
機床的工作方式分為:手動,MDI,自動
工作在MDI方式下通過手動輸入代碼后按循環啟動鍵,進行代碼執行。

網路介面


MDI:Medium Dependent Interface
連接傳輸媒介與AUTONEG的介面。

計算機中


MDI(Multiple Document Interface)就是所謂的多文檔界面,與此對應就有單文檔界面(SDI),它是微軟公司從Windows 2.0下的Microsoft Excel電子表格程序開始引入的,Excel電子表格用戶有時需要同時操作多份表格,MDI正好為這種操作多表格提供了很大的方便,於是就產生了MDI程序。

應用構成


用AppWizard產生一個MDI工程t(無OLE等支持),AppWizard創建了一系列文件,構成了一個應用程序框架。這些文件分四類:頭文件(.h),實現文件(cpp),資源文件(rc),模塊定義文件(def),等。
構成應用程序的對象
應用構成
應用構成
該應用程序的結構,箭頭表示信息流向。
從CWinApp、CDocument、CView、CMDIFrameWnd、CMDIChildWnd類對應地派生出CTApp、CTDoc、CTView、CMainFrame、CChildFrame五個類,這五個類的實例分別是應用程序對象、文檔對象、視對象、主框架窗口對象和文檔邊框窗口對象。主框架窗口包含了視窗口、工具條和狀態欄。對這些類或者對象解釋如下。
(1)應用程序
應用程序類派生於CWinApp。基於框架的應用程序必須有且只有一個應用程序對象,它負責應用程序的初始化、運行和結束。
(2)邊框窗口
如果是SDI應用程序,從CFrameWnd類派生邊框窗口類,邊框窗口的客戶子窗口(MDIClient)直接包含視窗口;如果是MDI應用程序,從CMDIFrameWnd類派生邊框窗口類,邊框窗口的客戶子窗口(MDIClient)直接包含文檔邊框窗口。
如果要支持工具條、狀態欄,則派生的邊框窗口類還要添加CToolBar和CStatusBar類型的成員變數,以及在一個OnCreate消息處理函數中初始化這兩個控制窗口。
邊框窗口用來管理文檔邊框窗口、視窗口、工具條、菜單、加速鍵等,協調半模式狀態(如上下文的幫助(SHIFT+F1模式)和列印預覽)。
(3)文檔邊框窗口
文檔邊框窗口類從CMDIChildWnd類派生,MDI應用程序使用文檔邊框窗口來包含視窗口。
(4)文檔
文檔類從CDocument類派生,用來管理數據,數據的變化、存取都是通過文檔實現的。視窗口通過文檔對象來訪問和更新數據。
(5)視
視類從CView或它的派生類派生。視和文檔聯繫在一起,在文檔和用戶之間起中介作用,即視在屏幕上顯示文檔的內容,並把用戶輸入轉換成對文檔的操作。
(6)文檔模板
文檔模板類一般不需要派生。MDI應用程序使用多文檔模板類CMultiDocTemplate;SDI應用程序使用單文檔模板類CSingleDocTemplate。
應用程序通過文檔模板類對象來管理上述對象(應用程序對象、文檔對象、主邊框窗口對象、文檔邊框窗口對象、視對象)的創建。
構成應用程序的對象之間的關係
這裡,用圖的形式可直觀地表示所涉及的MFC類的繼承或者派生關係,如圖1-2所示意。
從CObject類派生出來的;所有處理消息的類都是從CCmdTarget類派生的。如果是多文檔應用程序,文檔模板使用CMultiDocTemplae,主框架窗口從CMdiFarmeWnd派生,它包含工具條、狀態欄和文檔框架窗口。文檔框架窗口從CMdiChildWnd派生,文檔框架窗口包含視,視從CView或其派生類派生。
構成應用程序的文件
通過上述分析,可知AppWizard產生的MDI框架程序的內容,所定義和實現的類。下面,從文件的角度來考察AppWizard生成了哪些源碼文件,這些文件的作用是什麼。表1-1列出了AppWizard所生成的頭文件,表1-2列出了了AppWizard所生成的實現文件及其對頭文件的包含關係。
表1-1AppWizard所生成的頭文件
頭文件用途
stdafx.h標準AFX頭文件
resource.h定義了各種資源ID
t.h#include "resource.h"定義了從CWinApp派生的應用程序對象CTApp
childfrm.h定義了從CMDIChildWnd派生的文檔框架窗口對象CTChildFrame
mainfrm.h定義了從CMDIFrameWnd派生的框架窗口對象CMainFrame
tdoc.h定義了從CDocument派生的文檔對象CTDoc
tview.h定義了從CView派生的視圖對象CTView
表1-2AppWizard所生成的實現文件
實現文件所包含的頭文件實現的內容和功能
stdafx.cpp#include "stdafx.h"用來產生預編譯的類型信息。
t.cpp# include "stdafx.h"# include "t.h"# include "MainFrm.h"# include "childfrm.h"#include "tdoc.h"#include "tview.h"定義CTApp的實現,並定義CTApp類型的全局變數theApp。
childfrm.cpp#inlcude "stdafx.h"#include "t.h"#include “childfrm.h”實現了類CChildFrame
childfrm.cpp#inlcude "stdafx.h"#include "t.h"#include "childfrm.h"實現了類CMainFrame
tdoc.cpp# include "stdafx.h"# include "t.h"# include "tdoc.h"實現了類CTDoc
tview.cpp# include "stdafx.h"# include "t.h"# include "tdoc.h"# include "tview.h"實現了類CTview
從表1-2中的包含關係一欄可以看出:
CTApp的實現用到所有的用戶定義對象,包含了他們的定義;CView的實現用到CTdoc;其他對象的實現只涉及自己的定義;
當然,如果增加其他操作,引用其他對象,則要包含相應的類的定義文件。
對預編譯頭文件說明如下:
所謂頭文件預編譯,就是把一個工程(Project)中使用的一些MFC標準頭文件(如Windows.H、Afxwin.H)預先編譯,以後該工程編譯時,不再編譯這部分頭文件,僅僅使用預編譯的結果。這樣可以加快編譯速度,節省時間。
預編譯頭文件通過編譯stdafx.cpp生成,以工程名命名,由於預編譯的頭文件的後綴是“pch”,所以編譯結果文件是projectname.pch。
編譯器通過一個頭文件stdafx.h來使用預編譯頭文件。stdafx.h這個頭文件名是可以在project的編譯設置里指定的。編譯器認為,所有在指令#include"stdafx.h"前的代碼都是預編譯的,它跳過#include"stdafx.h"指令,使用projectname.pch編譯這條指令之後的所有代碼。
因此,所有的CPP實現文件第一條語句都是:#include"stdafx.h"。
另外,每一個實現文件CPP都包含了如下語句:
#ifdef _DEBUG
#undef THIS_FILE
static char BASED_CODE THIS_FILE[]=__FILE__;
#endif
這是表示,如果生成調試版本,要指示當前文件的名稱。__FILE__是一個宏,在編譯器編譯過程中給它賦值為當前正在編譯的文件名稱。

文件打開


MDI文件是Microsoft Office Document Imaging使用的一個特殊格式.
開始菜單--程序---Microsoft Office---Microsoft Office---Microsoft Office Document Imaging