游戏开发论坛

 找回密码
 立即注册
搜索
查看: 4259|回复: 6

关于流程控制器的一个疑问请教

[复制链接]

10

主题

21

帖子

28

积分

注册会员

Rank: 2

积分
28
发表于 2009-9-23 22:20:00 | 显示全部楼层 |阅读模式
问题有点多- -因为这学期的游戏设计大赛里我们小组决定试试用古月来开发。。。。现在在熟悉古月中。。。

在GUI/MultiPage这个例子中。。定义了 PageControl *pc;

然后重复pc+=XXX来添加3个流程控制器,流程控制器的构造函数是
FlowControl();                                                     //本类构造函数
FlowControl(FlowObject *);                                           //本类构造函数
FlowControl(wchar_t *,FlowObject *);           

现在假如我想在其中一个控制器,比如画矩形这一个中,在矩形图形上添加一个控件。应该怎样做?
因为参数需要的是FlowObject的对象,而Button那些控件不是这个类型的

我尝试了在画矩形的类
class Rectangle:public FlowObject里加入Button的创建。但是失败,貌似这样做BUTTON对象还是不会被加进流程控制器里  


直观来说,就是那个程序运行后,每一个选项卡对应一块画板。现在我希望他不止是一块画板而是一个容器

Control可以ADD一个BUTTON对象,但这样在层次关系方面BUTTON就成了全局了。我希望的是BUTTON属于某一个选项卡。但选项卡是FlowContorl类型,不能ADD BUTTON

2万

主题

2万

帖子

6万

积分

论坛元老

Rank: 8Rank: 8

积分
66489
QQ
发表于 2009-9-23 23:14:00 | 显示全部楼层

Re:关于流程控制器的一个疑问请教

MultiPage这样设计是为了让每一页的流程都可以运行,但只有位于前台的页面会被调用Draw和Update,其它页面只调用Update。

你给Rectangle添加一个构造函数,在里面将new出来的Button添加到Control里就可以了。

10

主题

21

帖子

28

积分

注册会员

Rank: 2

积分
28
 楼主| 发表于 2009-9-24 10:59:00 | 显示全部楼层

Re:关于流程控制器的一个疑问请教

这样是可以,有2种情况,在构造函数里NEW了接着就加到Control,这样按钮的创建就是以窗体左上角为0,0来创建了。结果跟画图函数同一坐标的按钮实际在窗口左上角,按钮能按下

第2种情况,按钮正常创建,属于Rectangle类,选第2个选项卡它不显示,但是它不能被按下,就像画图那样把按钮的“样子”画到那个区域而已。是不是这种创建按钮的方法会调用不同的默认配置?
class Rectangle:public FlowObject
{
public:
   Button *bt;
   Rectangle()
     {
        bt=new Button(82,42,30,30);
      }
}


主类中
Rectangle *rect=new Rectangle;
Control+=rect->bt;
.....
*pc+=new FlowControl(L"按钮",bt);

2万

主题

2万

帖子

6万

积分

论坛元老

Rank: 8Rank: 8

积分
66489
QQ
发表于 2009-9-24 11:49:00 | 显示全部楼层

Re:关于流程控制器的一个疑问请教

Rectangle *rect=new Rectangle;
Control+=rect->bt;

这样和直接Control+=new Button没有什么差别,

但这句,我不明白
*pc+=new FlowControl(L"按钮",bt);

bt是Button类,应该是不能放在FlowControl里的

10

主题

21

帖子

28

积分

注册会员

Rank: 2

积分
28
 楼主| 发表于 2009-9-24 12:32:00 | 显示全部楼层

Re:关于流程控制器的一个疑问请教

我整理了一下
在选项卡内显示了按钮,按钮不可按下
Rectangle的构造函数
Rectangle()
{Control+=new Button(82,42,30,30);}

Button要加到Control里才能显示
现在Button先加到了FlowControl对象里 *pc+=new FlowControl(L"按钮",new Rectangle);
然后pc再加到Control里,这样Button能显示但不能点击(没有被点击的效果)

要使按钮能被点击,就需要把按钮直接ADD到Control里。。。但这样的话Button就属于主流程而不是属于FlowControl了

2万

主题

2万

帖子

6万

积分

论坛元老

Rank: 8Rank: 8

积分
66489
QQ
发表于 2009-9-24 13:05:00 | 显示全部楼层

Re:关于流程控制器的一个疑问请教

我测试一下,可能是我控件本身有问题。

这个控件早期用过后,很多年没有人用了。

2万

主题

2万

帖子

6万

积分

论坛元老

Rank: 8Rank: 8

积分
66489
QQ
发表于 2009-9-24 19:13:00 | 显示全部楼层

Re:关于流程控制器的一个疑问请教

不好意思!这是一个Bug.现已修复。

请下载LR-44
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

作品发布|文章投稿|广告合作|关于本站|游戏开发论坛 ( 闽ICP备17032699号-3 )

GMT+8, 2024-12-22 09:10

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表