软件框架的利器、TangramMini组件应用教程四:基本应用

上篇中我介绍了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显示用户选择的节点。

时间: 2024-09-08 20:02:53

软件框架的利器、TangramMini组件应用教程四:基本应用的相关文章

软件框架的利器、TangramMini组件应用教程一:入门

由于工作需要,使用了Tangram团队开发的TangramMini组件.自认为对此组件了解得足够深入,并且网上相关此产品的文档不多,所以从今天开始写几篇TangramMini组件教程. TangramMini组件是Tangram团队从Tangram框架产品中演绎出来的迷你微型版本,在非商业产品中可以免费使用,认证后还可以做商业开发,功能强大,主要用于软件产品框架设计.B/S与C/S无缝结合能及软件快速二次开发等.TangramMini组件包内部提供两个主要COM组件,一个为TangramMini

软件框架的利器、TangramMini组件应用教程二:安装对象

在上一篇教程中,我们生成了一个XTML文档,并且使用Microsoft Visual C++ 6.0生成了一个Tutorial1对话框程序,在这一篇中,我将介绍怎样在建立的框架上安装自己感兴趣的对象. 首先,我先介绍一下TangramMiniCtrl组件怎样在空白区域安装一个对象.此组件提供了方法SetWnd()安装一个窗口对象,在以后的介绍中我统一将空白区域叫做一个Tangram节点对象,每一个这样的空白区域对应TangramMini组件中的一个TangramObjectInfo对象. BOO

软件框架的利器、TangramMini组件应用教程六:MDI应用一

上一篇中我介绍了TangramMini组件在SDI程序中的应用,从这一篇开始我计划写两到三篇关于TangramMini组件在MDI应用程序中的使用,其实在MDI中的应用与SDI中应用创建步骤是一致的.在MDI应用程序中使用了TangramMini组件之后,使应用程序的框架设计更加快捷.简单.易于修改,并且使MDI应用程序有了很强的个性化色彩. TangramMini组件的安装,请到http://www.tangrammini.com中下载组件安装包并安装. 由于在MDI应用程序中使用Tangra

软件框架的利器、TangramMini组件应用教程五:SDI中的应用

前面四篇中我介绍了TangramMini组件在对话框程序中的使用,本篇我将简单介绍一下TangramMini组件在SDI(单文档界面)程序中的使用.在SDI程序中利用TangramMini组件搭建框架使应用程序框架设计更加快捷.简单.废话我不多说,直接切入主题. 请注意,要安装TangramMini组件,请到http://www.tangrammini.com中下载组件安装包并安装,并且如果要运行源代码,也必须先安装TangramMini组件方可编译运行. 首先我们要先生成一个普通的SDI程序.

软件框架的利器、TangramMini组件应用教程三:基本使用

在上一篇中我介绍了SetWnd()以及Save()的用法,我相信大家已经知道怎样安装自己的窗口组件了,在这一篇中我将介绍一下TangramMiniCtrl组件的基本方法,以及将Tutorial1对话框程序改造成一个软件的模型. 首先,我们来改造这个对话框程序.因为是个框架程序,所以做为一个对话框我们假设这个对话框要有可改变窗体尺寸的要求,我们先更改窗体属性,显示主对话框的属性对话框(View -> Properties),在Dialog Properties对话框中,进入Styles页,将Bor

如何在Python的Flask框架中使用模版的入门教程

  如何在Python的Flask框架中使用模版的入门教程?          概述 如果你已经阅读过上一个章节,那么你应该已经完成了充分的准备工作并且创建了一个很简单的具有如下文件结构的Web应用: microblog |-flask文件夹 |-<一些虚拟环境的文件> |-app文件夹 | |-static文件夹 | |-templates文件夹 | |-__init__.py文件 | |-views.py文件 |-tmp文件夹 |-run.py文件 以上给你介绍了在Python的Flask

UI日历组件PS教程

  在思考中看教程--UI日历组件PS教程 开发教程"> 最近在群里和小伙伴们聊天,发现一些同学(尤其是新手)不善于学习,就算告知了方法还是要来问,最好连具体参数也说出来,更有甚者,哪怕已经手把手的教了,换个东西又不会了.设计的东西那么多,难道一样样都要人手把手的教吗? TanghuiDesign大神说了:做设计的必定需要掌握两把刷子:一是技术,二是思路.跟着教程做东西,其实也是个临摹,只不过教程是手把手的教你怎么做.跟着教程走,需要注意些什么呢?狼狼认为,一个是学技术.比如这些效果是怎么

终于开发完成的通用软件框架。请大家试试看,给予讨论。

问题描述 下载页面http://download.csdn.net/source/244821个人联系可以发信到generic_engine@hotmail.com 解决方案 解决方案二:mark解决方案三:看来大家都很忙啊,还是csdn人气不行了.这样说吧,这个通用框架将会为软件设计领域带来一场革命.不知感兴趣的人是否会多些?解决方案四:新开了一个SourceForge下载页,也可以在这里下载:http://sourceforge.net/projects/bos-code解决方案五:支持一下

Python的Flask框架中实现分页功能的教程

  这篇文章主要介绍了Python的Flask框架中实现分页功能的教程,文中的示例基于一个博客来实现,需要的朋友可以参考下 Blog Posts的提交 让我们从简单的开始.首页上必须有一张用户提交新的post的表单. 首先我们定义一个单域表单对象(fileapp/forms.py): ? 1 2 class PostForm(Form): post = TextField('post', validators = [Required()]) 下面,我们把这个表单添加到template中(file