应用程序对象正在关闭_设计您的交互应用程序

设计您的交互应用程序

如何创建单独的交互应用程序

摘要

本文将解释如何创建交互式应用程序,以及应该从交互式应用程序基类中覆盖的方法

  • 什么是交互应用程序?
  • 一个交互应用程序例子
  • 总之

什么是交互应用程序?

CAA V5交互应用程序是一个程序,您可以启动它,它通常可以使用最终用户的输入来执行,直到最终用户停止它为止。CAA V5交互应用程序的基类是CATInteractiveApplication类。 对话框框架为您提供了一些关键组件来设计交互式应用程序。它们包括:

  • 要派生以创建应用程序的CATInteractiveApplication类
  • 要派生以创建应用程序主窗口和演示文稿的CATDlgDocument类
  • 要派生以创建对话框所需的临时窗口的CATDlgDialog类。

下图显示了所涉及的对象及其使用统一建模语言(UML)的主要方法。

2d67dbf4099bd80cf49c25f3e8255c53.png

应用程序派生自CATInteractiveApplication类,而窗口派生自CATDlgDocument类。应用程序聚合指向窗口的指针,并在BeginApplication方法中实例化它。对称地,窗口聚合指向应用程序的指针。

daa1a6dec6499aec1d4a2176501dde67.png请注意,窗口构造函数不包含任何语句。它只实例化,即为窗口及其基类分配内存区域。Build方法专用于创建具有适当值的对象。这是因为要分配的外部资源使用虚拟方法,只要构造器不退出,虚拟方法表更新就可能无法完成,因此其内容可能不准确。此Build方法不存在于任何Dialog框架基类中,因此无法重新定义。派生Dialog框架类时必须创建它。

请注意,窗口构造函数不包含任何语句。它只实例化,即为窗口及其基类分配内存区域。Build方法专用于创建具有适当值的对象。这是因为要分配的外部资源使用虚拟方法,只要构造器不退出,虚拟方法表更新就可能无法完成,因此其内容可能不准确。此Build方法不存在于任何Dialog框架基类中,因此无法重新定义。派生Dialog框架类时必须创建它。

一个交互应用程序例子

以下示例是带有主窗口的标准应用程序框架。它包括图中所示的主要对象及其相关方法。在CAADlgInterApplication.m模块中的http://CAADialog.edu框架中检索两个类CAADlgInterApplication和CAADlgInterWindow。

首先查看CAADlgInterApplication头文件:

#include "CATInteractiveApplication.h"

class CAADlgInterApplication : public CATInteractiveApplication

{

public:

CAADlgInterApplication (const CATString & iAppliName);

virtual void BeginApplication();

virtual int EndApplication();

virtual ~MyApplication();

};

并在 CAADlgInterWindow 头文件中:

#include "CATDlgDocument.h"

class CATInteractiveApplication;

class CAADlgInterWindow: public CATDlgDocument

{

public:

CAADlgInterWindow(CATInteractiveApplication * pp);

virtual ~CAADlgInterWindow();

void Build();

private:

void CloseAppli(CATCommand * iSendingCommand,

CATNotification * iSentNotification,

CATCommandClientData UsefulData);

...

private:

CATInteractiveApplication * _pApplication;

};

这些类声明遵循关系图。指向应用程序的指针存储为文档数据成员。方法CloseAppli用于在用户请求时关闭应用程序和文档。

CAADlgInterApplication源文件:

CAADlgInterApplication ::CAADlgInterApplication (const CATString & IAppliName)

:CATInteractiveApplication(NULL, IAppliName)

{ }

void CAADlgInterApplication ::BeginApplication()

{

MyDoc = new CAADlgInterWindow(this);

MyDoc->Build();

SetVisibility(CATDlgShow); // 使窗口可见

}

int CAADlgInterApplication ::EndApplication() // 调用 Destroy

{ return 0; }

CAADlgInterApplication ::~MyApplication() { }

CAADlgInterApplication ApplicationInstance ("MyNiceApplication"); // 实例化应用程序

CAADlgWindowApplication源文件如下:

...

CAADlgInterWindow ::CAADlgInterWindow (CATInteractiveApplication * iParentCommand)

:CATDlgDocument(iParentCommand, "CAADlgInterWindowId"),

_pApplication(iParentCommand)

{

//要分配但不计算的空构造函数

}

void CAADlgInterWindow ::Build() {

... //把构建窗口所需的代码放在这里

//设置回调以在关闭窗口时关闭应用程序

AddAnalyseNotificationCB(this,

GetWindCloseNotification(),

(CATCommandMethod)&MyDocument::CloseAppli,

NULL);

}

CAADlgInterWindow ::~CAADlgInterWindow () { }

void CAADlgInterWindow ::CloseAppli // close the application

(CATCommand * _ICommand,

CATNotification * _INotification,

CATCommandClientData UsefulData)

{ _pApplication->Destroy();

_pApplication = NULL ;

}

总之

交互应用程序只是简单地实例化,不需要创建任何主程序。主对话框窗口派生自相应的对话框窗口类,并包含一个用于创建构成窗口的容器和控件的生成方法,而不是使用窗口构造函数来完成此操作。应用程序和窗口通过引用聚合另一个。

历史版本

版本: 1 [2000年1月] 文档创建

版权所有 © 2000, 达索系统. 保留所有权利.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值