在MUILIB中同時(shí)有窗口和容器的概念,在很多人的認(rèn)知里,DirectUI模式就是一個(gè)窗口的意思,剩下的都是DirectUI控件,那么在MUILIB中是不是這樣呢?其實(shí)不然,那么窗口和容器究竟是什么關(guān)系呢?下面我們我們來詳細(xì)的看看,
首先,在MUILIB中窗口是作為程序的框架而存在,一般情況下,一個(gè)窗口會(huì)有唯一的一個(gè)根容器作為窗口內(nèi)的所有從屬元素的管理機(jī)構(gòu),這個(gè)根容器內(nèi)可以包含不限制個(gè)數(shù)的子容器和UI控件。好,到此為止,我們就得到了一個(gè)類似于我們在用MFC開發(fā)的SDI架構(gòu)的應(yīng)用程序。
其次,在MUILIB中窗口是可以依附于UI控件的,窗口既可以依附于UI的功能控件,也可以依附于UI容器類控件。在這些依附于UI控件的窗口經(jīng)過特別封裝后,就可以作為一個(gè)子框架來使用,這樣幾個(gè)包含窗口的容器控件依附于一個(gè)特別定制的容器控件后,我們就得到一個(gè)類似于MFC中的MDI架構(gòu)的應(yīng)用程序。
現(xiàn)在我們說說容器,所謂的容器就是可以包含子控件的一種UI控件,有別于普通控件,由于他有子控件,所以他不僅要處理自身的一些諸如繪制、設(shè)置自身大小位置等操作,還要負(fù)責(zé)管理子控件的諸如他們位置、間隔、調(diào)用各自繪制方法進(jìn)行繪制等操作。由于是一個(gè)容器,那么他必然有滾動(dòng)條來作為控制超過顯示區(qū)域的邏輯視圖的不同區(qū)域。
為了規(guī)范容器內(nèi)各種控件的排列顯示方式而擴(kuò)展了多種特殊容器,比如大家熟悉的列表容器、控制不同頁切換的Tab容器、以及資源管理器中大家熟悉的那個(gè)縮略圖顯示模式的Tile容器等。