设计您的交互应用程序
如何创建单独的交互应用程序
摘要
本文将解释如何创建交互式应用程序,以及应该从交互式应用程序基类中覆盖的方法
- 什么是交互应用程序?
- 一个交互应用程序例子
- 总之
什么是交互应用程序?
CAA V5交互应用程序是一个程序,您可以启动它,它通常可以使用最终用户的输入来执行,直到最终用户停止它为止。CAA V5交互应用程序的基类是CATInteractiveApplication类。 对话框框架为您提供了一些关键组件来设计交互式应用程序。它们包括:
- 要派生以创建应用程序的CATInteractiveApplication类
- 要派生以创建应用程序主窗口和演示文稿的CATDlgDocument类
- 要派生以创建对话框所需的临时窗口的CATDlgDialog类。
下图显示了所涉及的对象及其使用统一建模语言(UML)的主要方法。
![2d67dbf4099bd80cf49c25f3e8255c53.png](https://img-blog.csdnimg.cn/img_convert/2d67dbf4099bd80cf49c25f3e8255c53.png)
应用程序派生自CATInteractiveApplication类,而窗口派生自CATDlgDocument类。应用程序聚合指向窗口的指针,并在BeginApplication方法中实例化它。对称地,窗口聚合指向应用程序的指针。
![daa1a6dec6499aec1d4a2176501dde67.png](https://img-blog.csdnimg.cn/img_convert/daa1a6dec6499aec1d4a2176501dde67.png)
请注意,窗口构造函数不包含任何语句。它只实例化,即为窗口及其基类分配内存区域。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, 达索系统. 保留所有权利.