Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1569742
  • 博文数量: 884
  • 博客积分: 52280
  • 博客等级: 大将
  • 技术积分: 13060
  • 用 户 组: 普通用户
  • 注册时间: 2008-08-06 09:46
文章分类

全部博文(884)

文章存档

2008年(884)

我的朋友

分类: C/C++

2008-08-06 10:04:39

下载本文示例代码
  对话框加入后,我们就可以创建两个对话框实例,在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(单文档界面)中的基本应用。

  下载本文示例代码

阅读(212) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~