程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> VC >> 關於VC++ >> 軟件框架的利器、TangramMini組件應用教程四:基本應用

軟件框架的利器、TangramMini組件應用教程四:基本應用

編輯:關於VC++

上篇中我介紹了SetCaption以及SetAction兩個方法,在這一篇中我將做一些基本的應用。

在前面我已經將對話框安裝了List Control、Tree Control和Edit Box三個控件,現在我計劃在左邊的Tree Control中插入幾個節點,然後點擊節點後在Edit Box裡顯示一些信息,而在List Control中並不顯示信息,但是選擇Tree Control中的不同的節點後在此區域(第一篇中的1號區域)顯示一些其它窗口。

我計劃給Tree Control插入三個節點,一個根節點(ListView),兩個子節點(ChildWindow1、ChildWindow2)。選擇ListView節點就在1號區域顯示List Control,選擇子節點ChildWindow1與ChildWindow2分別在1號區域顯示一個不同的窗體。我們先加入兩個窗體,這裡我加入兩個對話框對象,對應生成CMyDialog1與CMyDialog2兩個類。

注:加入對話框窗體的步驟如下:

進入菜單Insert ->New Form項,彈出New From對話框;

在New Class對話框中,在Name中輸入CMyDialog1,在Base class中選擇CDialog;

在Dialog ID中我們可以自定義ID,這裡我們不做修改,其余項不做修必,最後單擊OK完成退出;

修改添加的對話框(ID:IDD_MYDIALOG1_DIALOG)屬性,將Style選擇為Child,Border選擇為None;

重復步驟上面1至4完成CMyDialog2的添加;

為了區分兩個對話框的不同界面,我在上面分別放入了一個Static Text,以做區分;

對話框加入後,我們就可以創建兩個對話框實例,在CTutorial1Dlg類中分別添加類型為CMyDialog1*與CMyDialog2*的兩個變量m_pMyDialog1、m_pMyDialog2;在OnInitDialog函數體中分別對應給兩個變量分配空間(New),並創建實例(Create),代碼如下:

m_pMyDialog1 = new CMyDialog1(this);
  m_pMyDialog2 = new CMyDialog2(this);
  m_pMyDialog1->Create(IDD_MYDIALOG1_DIALOG,this);
  m_pMyDialog2->Create(IDD_MYDIALOG2_DIALOG,this);
接下來我們加入處理Tree Control對象的TVN_SELCHANGED的消息。打開主對話框源碼,選擇Tree Control控件並右擊鼠標,在彈出的快捷菜單中選擇“Events…”菜單項,從左邊例表中選擇TVN_SELCHANGED,單擊“Add and Edit”按鈕,處理函數名為OnSelchangedTree1,Microsoft Visual C++自動跳轉到OnSelchangedTree1函數體中,編寫代碼,最終如下:void CTutorial1Dlg::OnSelchangedTree1(NMHDR* pNMHDR, LRESULT* pResult)
{
  NM_TREEVIEW* pNMTreeView = (NM_TREEVIEW*)pNMHDR;
  // TODO: Add your control notification handler code here
  *pResult = 0;
  HTREEITEM hItem = pNMTreeView->itemNew.hItem;
  if (hItem == NULL) return;

  CString strItemText = m_wndTree.GetItemText(hItem);
  m_wndEdit.SetWindowText(_T("selected: \"") + strItemText + _T("\""));

  if (strItemText.CompareNoCase(_T("ListView")) == 0)
  {
    m_wndMiniCtrl.SetWnd(_T("Page1_S0001_S0000"),
      (long)m_wndList.GetSafeHwnd());
  }
  else if (strItemText.CompareNoCase(_T("ChildWindow1")) == 0)
  {
    m_wndMiniCtrl.SetWnd(_T("Page1_S0001_S0000"),
      (long)m_pMyDialog1->GetSafeHwnd());
  }
  else
  {
    m_wndMiniCtrl.SetWnd(_T("Page1_S0001_S0000"),
      (long)m_pMyDialog2->GetSafeHwnd());
  }
}

其中strItemText中保存了用戶選擇Tree Control節點的標題,根據節點標題分別對應調用SetWnd(…)方法安裝窗體對象。並且在Edit box顯示用戶選擇的節點。

經過上面有限的幾個步驟之後,運行的結果如下面三圖所示:

上面三個圖中,第一個圖是選擇Tree Control控件中的根節點ListView的效果;第二個圖是選擇ChildWindow1節點的效果;第三個圖是選擇ChildWindow2節點的效果。可以看出,可以重復對一個Tangram空白視圖區(本例子中的Page1_S0001_S0000)調用SetWnd(…)方法安裝多個窗口對象。

好了,這一篇就簡單的寫到這裡,到此,關於TangramMini組件在對話框中的應用也全部結束,下一篇我將介紹關於TangramMini組件在SDI(單文檔界面)中的基本應用。

  1. 上一頁:
  2. 下一頁:
欄目導航
Copyright © 程式師世界 All Rights Reserved