承接上一篇教程,我們已成功生成 XTML 文檔並建立基礎對話框程式。本篇將深入講解如何在 TangramMini 框架的空白區域(節點)中安裝自定義控件對象,實現真正的軟體框架構建。
TangramMiniCtrl 組件提供 SetWnd 方法將窗口對象安裝到指定節點:
BOOL SetWnd(LPCTSTR strObjName, long hHostWnd);
掌握此方法即可靈活操控框架佈局。所有節點操作均透過節點名稱定位,直觀高效。
上一篇設計的 XTML 第一頁包含三個區域,我們分別安裝:
在主對話框資源編輯器中繪製三個對應控件(位置大小任意),再透過 ClassView 為各控件建立控制變數:
m_wndList → List Controlm_wndTree → Tree Controlm_wndEdit → Edit Control執行程式,雙擊框架中的空白區域,TangramMiniCtrl 會自動將該節點名稱複製到剪貼簿。本例中三個節點名稱分別為:
Page1_S0000Page1_S0001_S0000Page1_S0001_S0100在 CTutorial1Dlg::OnInitDialog() 中 LoadFile 呼叫後加入:
m_wndMiniCtrl.SetWnd(_T("Page1_S0000"), (long)m_wndTree.m_hWnd);
m_wndMiniCtrl.SetWnd(_T("Page1_S0001_S0000"), (long)m_wndList.m_hWnd);
m_wndMiniCtrl.SetWnd(_T("Page1_S0001_S0100"), (long)m_wndEdit.m_hWnd);

執行後,三個控件將自動平鋪填滿對應節點區域,佈局整齊規範。

預設重啟程式時框架會恢復 XTML 設計時尺寸。若需記住使用者調整後的框架大小,可呼叫 Save() 方法:
BOOL Save(); // 無參數,返回儲存是否成功
在主對話框 OK 按鈕的 OnOK() 中加入:
void CTutorial1Dlg::OnOK() {
m_wndMiniCtrl.Save(); // 儲存當前框架尺寸
CDialog::OnOK();
}

如此,使用者關閉對話框時,框架尺寸自動記錄;下次載入即恢復上次狀態,極大提升使用體驗。
透過 SetWnd 將自定義控件安裝到框架節點,配合 Save() 持久化佈局,一個簡單的對話框即刻化身為專業軟體框架雛形。TangramMini 組件的強大與易用性在此展露無遺,為後續複雜介面開發奠定堅實基礎。