如下图

是wincc 自带的键盘空间的属性
其中的 @Transfer 是如何出现的 ,我按照他的空间重新创建的时候就没有这个属性了!
另外 下面代码中的@DisplayValue 是写好后自动创建的吗???
#include "apdefap.h"
void OnPropertyChanged(char* lpszPictureName, char* lpszObjectName, char* lpszPropertyName, char* value)
{
#include "trigger.h"
#define CODE_CLEAR 27
#define CODE_BACKSPACE 8
#define CODE_ENTER 13
DWORD dwMax=GetPropWord(lpszPictureName,lpszObjectName,"LimitMax");
DWORD dwVal=GetPropWord(lpszPictureName,lpszObjectName,"@DisplayValue");
if (strlen(value)>0)
{
char* s=value;
switch (s[0])
{
case CODE_BACKSPACE:
dwVal=dwVal/10;
SetPropWord(lpszPictureName,lpszObjectName,"@DisplayValue",dwVal);
break;
case CODE_CLEAR:
SetPropWord(lpszPictureName,lpszObjectName,"@DisplayValue",0);
break;
case CODE_ENTER:
{
LINKINFO plink;
LPCTSTR szIndirectName;
PDLRTGetLink(0,lpszPictureName,lpszObjectName,"OutputValue",&plink,NULL,NULL,NULL);
switch (plink.LinkType)
{
case (BUBRT_LT_VARIABLE_DIRECT):
SetTagDWord (plink.szLinkName,GetPropWord(lpszPictureName,lpszObjectName,"@DisplayValue"));
SetPropWord(lpszPictureName,lpszObjectName,"@DisplayValue",0);
break;
case (BUBRT_LT_VARIABLE_INDIRECT):
szIndirectName=GetTagChar(plink.szLinkName);
SetTagDWord(szIndirectName,GetPropWord(lpszPictureName,lpszObjectName,"@DisplayValue"));
SetPropWord(lpszPictureName,lpszObjectName,"@DisplayValue",0);
break;
default:
SetPropWord(lpszPictureName,lpszObjectName,"OutputValue",GetPropWord(lpszPictureName,lpszObjectName,"@DisplayValue"));
SetPropWord(lpszPictureName,lpszObjectName,"@DisplayValue",0);
break;
}
break;
}
default:
if ((s[0]>=48) && (s[0]<=57)) // Check if digit has been entered
{
int iVal=s[0]-48;
if ((dwMax-iVal)/10>=dwVal) // Check if new value is <= LimitMax
{
dwVal=dwVal*10+iVal;
SetPropWord(lpszPictureName,lpszObjectName,"@DisplayValue",dwVal);
}
else
printf("WARNING: Upper limit is %lu - digit is ignored.\r\n",dwMax);
break;
}
}
SetPropChar(lpszPictureName,lpszObjectName,lpszPropertyName,"");
}
}