画面中某静态文本背景颜色的C动作:
#include "apdefap.h"
long _main(char* lpszPictureName, char* lpszObjectName, char* lpszPropertyName)
{
// WINCC:TAGNAME_SECTION_START
// syntax: #define TagNameInAction "DMTagName"
// next TagID : 1
// WINCC:TAGNAME_SECTION_END
// WINCC:PICNAME_SECTION_START
// syntax: #define PicNameInAction "PictureName"
// next PicID : 1
// WINCC:PICNAME_SECTION_END
#define P "VK_hy_mpu3_sta"
return Color(P,11); //Return-Type: long int
}
当P=0000 0001 0000 0110,颜色为洋红(近于FF80FF);
当P=0000 0001 0000 0001,颜色为纯绿 (近于00FF00);
当P=0000 0000 0000 0000,颜色为灰 (近于808080);
问题:Color函数中case 11中的三种return,颜色没有纯绿色啊?小弟C语言基础不好,麻烦哪位大哥给详细讲讲,Color是怎么实现上述功能的?万分感谢!!
问题补充:
只有一次补充机会,实在不舍得用,有太多想问。
一楼zhangli0,非常感谢,小弟试过,好用,应变灵活,简洁适用,膜拜,佩服!二楼letham,解答详尽,尤其让我知道项目函数Color是设计人员自己编写的,我新建一个项目,果然项目函数是空的。我这里画面背景颜色转变都是通过Color函数实现的,所以我还是想知道它是怎么通过Color(p,11),实现我问题中的三种颜色转变的,图片11是Color项目函数的代码,麻烦大师给点拨点拨,万分感谢!
图片说明:
最佳答案
你先用动态对话框连接一个bool量为1显示颜色1,为0显示颜色2.然后转换成c脚本,把里面的变量换成你实际的变量,判断变量值等于你的三个值返回颜色,按照上面的格式增加一行,然后把脚本触发变量也改成你实际的变量就行了。如果用vbs表示颜色就简单了直接是:
rgb=(255,128,255)
rgb=(0,255,0)
rgb=(128,128,128)
补充:你的color(p,11),其中p就是color函数中的status参数,11就是type参数,即返回的是case11的颜色代码,其中如果p为1(0x1),则返回7985527,如果p为2(0x2)返回颜色16744703,后面的另一个返回值没有条件则不会返回。
提问者对于答案的评价:
为了节省图片量,程序中很多的//的部分被我删了,不小心把case11 最后一个return的条件:else给删了。case11返回的三种颜色,洋红和灰没错,但没有实际所显示的那种纯绿色,我不明白的地方就是这里:难道跳转到其他地方执行出个纯绿色?不是,肯定是哪个地方我忽略了,没有提供出有用的关键信息。
第一次在网站提问题,两位的回答详细、实用,对我帮助非常大,收获不小啊!非常感谢!!
原创文章,作者:more0621,如若转载,请注明出处:https://www.zhaoplc.com/plc201607.html