檢視原始碼 wxMDIParentFrame (wx v2.4.3)
MDI(多文件介面)父框架是一個視窗,其客戶區可以包含模擬完整桌面的 MDI 子框架。
MDI 是一種使用者介面模型,其中所有視窗都位於單一父視窗內,而不是彼此分離。儘管微軟本身(最早推廣這種模式的公司)發出 MDI 已過時的嚴厲警告,但它仍然很受歡迎。
MDI 父框架始終有一個與之關聯的 wxMDIClientWindow
,它是 MDI 子框架的父視窗。在最簡單的情況下,客戶視窗佔據整個父框架區域,但也可以調整其大小以使其更小,以便在框架中擁有其他視窗,一個典型的例子是在視窗邊緣使用側邊欄。
MDI 應用程式的外觀在不同的移植版本之間有所不同。經典的 MDI 模型,子視窗可以獨立移動、調整大小等,僅在 MSW 下可用,它提供對其的本機支援。在 Mac 移植版本中,多個頂層視窗也用於 MDI 子視窗,並且 MDI 父框架本身是不可見的,以適應本機的外觀和感覺要求。在所有其他移植版本中,使用基於選項卡的 MDI 實作(有時稱為 TDI),因此任何時刻最多只有一個 MDI 子視窗可見(子框架始終最大化)。
儘管可以有多個 MDI 父框架,但典型的 MDI 應用程式在單個 MDI 父框架視窗內具有多個 MDI 子框架,即 wxMDIChildFrame
類別的物件。
樣式
此類別支援以下樣式
此類別沒有特殊的樣式,所有 wxFrame
樣式都以通常的方式應用於它。唯一的例外是 wxHSCROLL 和 wxVSCROLL 樣式不應用於框架本身,而是應用於客戶視窗,因此使用它們可以為此視窗啟用水平和垂直滾動條,而不是框架。
請參閱
此類別繼承自以下類別,並可以使用以下類別的函數:
wxWidgets 文件:wxMDIParentFrame
摘要
函數
啟用目前活動的 MDI 子視窗之後的 MDI 子視窗。
啟用目前活動的 MDI 子視窗之前的 MDI 子視窗。
排列任何圖示化(最小化)的 MDI 子視窗。
以階梯方式排列 MDI 子視窗。
用於兩步驟的框架建構。
銷毀物件
傳回指向活動 MDI 子視窗的指標(如果有的話)。
傳回指向客戶視窗的指標。
預設建構函式。
建構函式,建立視窗。
等效於 tile(This, [])
。
水平或垂直平鋪 MDI 子視窗,具體取決於 orient
是 wxHORIZONTAL
還是 wxVERTICAL
。
類型
-type wxMDIParentFrame() :: wx:wx_object().
函數
-spec activateNext(This) -> ok when This :: wxMDIParentFrame().
啟用目前活動的 MDI 子視窗之後的 MDI 子視窗。
MDI 子視窗維護在一個有序列表中,此函數會切換到此列表中的下一個元素,如果目前活動的子視窗是最後一個,則會繞回列表的開頭。
-spec activatePrevious(This) -> ok when This :: wxMDIParentFrame().
啟用目前活動的 MDI 子視窗之前的 MDI 子視窗。
請參閱:activateNext/1
-spec arrangeIcons(This) -> ok when This :: wxMDIParentFrame().
排列任何圖示化(最小化)的 MDI 子視窗。
此方法僅在 MSW MDI 實作中實作,在其他平台下不做任何操作。
請參閱
-spec cascade(This) -> ok when This :: wxMDIParentFrame().
以階梯方式排列 MDI 子視窗。
此方法僅在 MSW MDI 實作中實作,在其他平台下不做任何操作。
請參閱
-spec create(This, Parent, Id, Title) -> boolean() when This :: wxMDIParentFrame(), Parent :: wxWindow:wxWindow(), Id :: integer(), Title :: unicode:chardata().
-spec create(This, Parent, Id, Title, [Option]) -> boolean() when This :: wxMDIParentFrame(), Parent :: wxWindow:wxWindow(), Id :: integer(), Title :: unicode:chardata(), Option :: {pos, {X :: integer(), Y :: integer()}} | {size, {W :: integer(), H :: integer()}} | {style, integer()}.
用於兩步驟的框架建構。
有關詳細資訊,請參閱 new/4
。
-spec destroy(This :: wxMDIParentFrame()) -> ok.
銷毀物件
-spec getActiveChild(This) -> wxMDIChildFrame:wxMDIChildFrame() when This :: wxMDIParentFrame().
傳回指向活動 MDI 子視窗的指標(如果有的話)。
如果存在任何子視窗,此函數會傳回一個非 NULL 指標。
-spec getClientWindow(This) -> wxMDIClientWindow:wxMDIClientWindow() when This :: wxMDIParentFrame().
傳回指向客戶視窗的指標。
-spec new() -> wxMDIParentFrame().
預設建構函式。
對於使用此建構函式建立的物件,請使用 create/5
。
-spec new(Parent, Id, Title) -> wxMDIParentFrame() when Parent :: wxWindow:wxWindow(), Id :: integer(), Title :: unicode:chardata().
-spec new(Parent, Id, Title, [Option]) -> wxMDIParentFrame() when Parent :: wxWindow:wxWindow(), Id :: integer(), Title :: unicode:chardata(), Option :: {pos, {X :: integer(), Y :: integer()}} | {size, {W :: integer(), H :: integer()}} | {style, integer()}.
建構函式,建立視窗。
請注意,如果您覆寫虛擬 OnCreateClient()
(未在 wx 中實作)方法,您不應該使用此建構函式,而是使用預設建構函式和 create/5
,否則您的覆寫方法將永遠不會被呼叫,因為 C++ 的虛擬呼叫解析規則。
在 wxMSW 下,當活動子視窗未最大化時,客戶視窗將自動具有凹陷邊框樣式,而當子視窗最大化時,則沒有邊框樣式。
請參閱:create/5
-spec tile(This) -> ok when This :: wxMDIParentFrame().
等效於 tile(This, [])
。
-spec tile(This, [Option]) -> ok when This :: wxMDIParentFrame(), Option :: {orient, wx:wx_enum()}.
水平或垂直平鋪 MDI 子視窗,具體取決於 orient
是 wxHORIZONTAL
還是 wxVERTICAL
。
此方法僅在 MSW MDI 實作中實作,在其他平台下不做任何操作。