在上一篇教程中,我們生成了一個XTML文檔,並且使用Microsoft Visual C++ 6.0生成了一個Tutorial1對話框程序,在這一篇中,我將介紹怎樣在建立的框架上安裝自己感興趣的對象。
首先,我先介紹一下TangramMiniCtrl組件怎樣在空白區域安裝一個對象。此組件提供了方法SetWnd()安裝一個窗口對象,在以後的介紹中我統一將空白區域叫做一個Tangram節點對象,每一個這樣的空白區域對應TangramMini組件中的一個TangramObjectInfo對象。
BOOL SetWnd(LPCTSTR strObjName, long hHostWnd);
該方法需要兩個參數,第一個參數為Tangram節點對象名稱(字符串類型),第二個參數為窗口句柄(整型)。返回為一個布爾型值,表示設置是否成功。在TangramMini組件中只要與Tangram節點相關的都由Tangram節點名稱決定,我們只要知道這一個基本方法就可以用好TangramMiniCtrl組件了,好了,我們開始真正的安裝。
在上一篇中我們設計的XTML文檔中第一頁中包含了三個區域部分,這裡我們將在三個區域中:
第一個區域安裝一個List Control,
第二個區域安裝一個Tree Control,
第三個區域安裝一個Edit Box,
首先,我們在主對話框中分別畫上三個控件,與位置以及大小無關,只要畫上即可,然後利用ClassView…(View -> ClassView…)分別定義三個控制變量:m_wndList、m_wndTree、m_wndEdit分別與上面三個控件對應。先看看現在我們現在做的例子的運行效果:
通過上圖,我可以看出三個對象(三個白色的對象)位置雜亂。
打開主對話框類(CTutorial1Dlg)中的OnInitDialog()方法中m_wndMiniCtrl.LoadFile (_T("test.xtml"));語句之後加入以下語句代碼:
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);
其中用了三次SetWnd方法,其中第一個參數是三個Tangram節點對象的名稱(空白區域名稱),
注:這個名稱,我們可以先運行一次,雙擊空白區域,就可以復制到當前Tangram節點對象(空白區域)的名稱(因為TangramMiniCtrl組件上面已經說明了雙擊可以復制名稱)。
通過上面的步驟之後,運行程序,最終效果如下:
我們會發現,通過上面的幾個步驟之後,三個對象都平鋪到對應的Tangram節點區域中,顯得非常整齊合理。
也許在你的程序中每次重新啟動運行後,窗體的大小位置會恢復到XTML文檔設計的時的大小,如果你想記住你每次改變框架後的尺寸,可以調用Save()方法,這樣方法可以保存當前框架的尺寸。
BOOL Save();
該方法沒有參數,返回布爾值,表示保存是否成功。
在主對話框資源上雙擊OK按鈕,添加OnOK()方法,VC開發環境自動轉入void CTutorial1Dlg::OnOK()函數體中,添加:m_wndMiniCtrl.Save();語句,最終函數體如下:
加入此語句之後,只要我們單擊OK按鈕關閉對話框時,TangramMiniCtrl組件自動幫我們記錄當前框架的尺寸,下次再LoadFile的時候,組件恢復當前記錄的尺寸。
這一篇的工作完成了,總結一下,用TangramMini組件確實很好用,我第一次使用的時候發現這麼方便很驚訝,因為一個簡單的對話框中利用了此組件之後,完全成了一個軟件的模型