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