请教唐老师和各位大虾一个问题

唐老师您好,我是个QNX新手,想请教您一个问题。我在使用IDE4.0.1编个使控件(ptbasic)颜色闪变的程序时,编了一段程序如下:
int
turn_color(PtWidget_t *widget,ApInfo_t *apinfo,PtCallbackInfo_t *cbinfo)
{
PtSetResource(ABW_Bs ,Pt_ARG_FILL_COLOR, Pg_GREEN, 0);
sleep(1);
PtSetResource(ABW_Bs ,Pt_ARG_FILL_COLOR, Pg_RED, 0);
delay(500);
PtSetResource(ABW_Bs ,Pt_ARG_FILL_COLOR, Pg_GREEN, 0);
delay(500);
PtSetResource(ABW_Bs ,Pt_ARG_FILL_COLOR, Pg_RED, 0);
delay(500);
PtSetResource(ABW_Bs ,Pt_ARG_FILL_COLOR, Pg_YELLOW, 0);

widget=widget,apinfo=apinfo,cbinfo=cbinfo;

return(Pt_CONTINUE);

}
用一个button的activate调用,调试运行后点击button发现在延时了几秒之后只显示黄色(YELLOW),中间没有颜色跳动。我又把这段程序放到main函数中去实现,发现可以正常出现颜色跳动,但在修改PhAB保存后main函数的内容自动恢复了。请问有什么解决方法么?我只想用button实现basic内部的颜色跳动。

只显示黄色是可预见的结果。因为turn_color()运行完后,才把控制权交回给Photon。这样第一你会等,第二只显示最后的结果黄色。
可以在改变颜色后加一句PtBkgdHandlerProcess();,让Photon及时处理一下已发生的事件。效果会好一点。

可也可以用一定时器来实现,每半秒换一下颜色。整下static变量,里面再做个swith什么的就可以了。

谢谢,其实自己也知道可能是控制权移交的问题.无奈自己是新手,不知道解决方法.下一步准备多看些事例程序.加强学习.希望大家发现好的事例能一起共享下,不胜感激!