C脚本注解

以下是Demo程序退出画面的两个按钮的脚本,不太会C语言,看不明白,麻烦哪位大侠给注解一下,万分感谢!
 按钮1:
 #include "apdefap.h"
 void OnLButtonDown(char* lpszPictureName, char* lpszObjectName, char* lpszPropertyName, UINT nFlags, int x, int y)
 {
 int i, j, n;
 char pic_name[256];
 char obj_name[60];

  n = strlen( lpszPictureName );

 for ( i = n; i > 0; i-- )
   if ( lpszPictureName[i] == '.' )
     {
     strncpy( pic_name, lpszPictureName, i );
     strcpy( obj_name, &lpszPictureName[i+1] );
     for ( j = 0; j < (n-i); j++)
       if ( obj_name[j] == ':' )
         {
         obj_name[j] = '\0';
         break;
         }
     SetVisible(pic_name,obj_name,FALSE);
     break;
     }

 }

 按钮2:
 #include "apdefap.h"
 void OnLButtonDown(char* lpszPictureName, char* lpszObjectName, char* lpszPropertyName, UINT nFlags, int x, int y)
 {

 #define ApcRT_Start_Stop "RT_Start_Stop"
 #define ApcRT_Stat "RT_Stat"

 
 #pragma code ("kernel32.dll")
 WINBASEAPI VOID WINAPI Sleep(DWORD dwMilliseconds);
 #pragma code ()

 SetTagBit(ApcRT_Stat ,1);
 SetTagBit(ApcRT_Start_Stop,1-GetTagBit(ApcRT_Start_Stop));
 Sleep(3000);

 DeactivateRTProject ();

 }

最佳答案

#include "apdefap.h"
 void OnLButtonDown(char* lpszPictureName, char* lpszObjectName, char* lpszPropertyName, UINT nFlags, int x, int y)
 {
 int i, j, n;                           //定义整型变量
 char pic_name[256];                     //定义字符串,长度是256个字节
 char obj_name[60];                      //定义字符串,长度是60个字节

  n = strlen( lpszPictureName );               //将lpszPictureName的长度付给n

 for ( i = n; i > 0; i-- )                           //for循环从n开始递减
   if ( lpszPictureName[i] == '.' )                   //如果lpszPictureName的第i的字符等于'.',则执行以下语句
     {
     strncpy( pic_name, lpszPictureName, i );      //将lpszPictureName的前i的字符拷贝给pic_name
     strcpy( obj_name, &lpszPictureName[i+1] );
     for ( j = 0; j < (n-i); j++)
       if ( obj_name[j] == ':' )
         {
         obj_name[j] = '\0';
         break;
         }
     SetVisible(pic_name,obj_name,FALSE);     //设置对象属性为不可见
     break;
     }

 }
 

提问者对于答案的评价:
谢谢!

原创文章,作者:more0621,如若转载,请注明出处:https://www.zhaoplc.com/plc270773.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2019年6月11日
下一篇 2019年6月11日

相关推荐

  • 报警记录里报警组状态变量有值但是没有报警

    wincc7.5,报警记录有4组,分为ABCD,每组设置状态变量,然后0正常,大于0就闪烁报警。其中有一个C组总会莫名其妙的报警闪烁,查看组里没有变量报警,查看C组的状态变量值25…

    2021年7月5日
  • 葡萄牙(巴西)代码问题

    现在手上有个工程需要进行语言切换,分别是英语和葡萄牙语。英语和中文的代码已经知道了,谁知道葡萄牙语(巴西)的代码。请发邮件到xia_yunpeng@163.com 专家建议 Set…

    SIMATIC WinCC 2020年11月1日
  • WINCC服务器和客户机

    一个项目,一台服务器,八台客户机,服务器已经装好,2003系统,请问客户机怎么设置?用不用新建程序,怎样访问服务器的变量 最佳答案 给你几个连接,多看看资料。WinCC …

    SIMATIC WinCC 2019年6月11日
  • wincc组态的按钮无法控制plc

    现我做了一个循环彩灯的程序,然后再wincc已经组态好了控制画面,有启动,停止按钮以及彩灯。当我把组态画面上传到HMI中后,PLC动作,相应的彩灯在变化,但是两个按钮就是控制不了彩…

    2017年11月29日
  • NoteBook与MP277通讯的相关参数设置

    各位,我的本无R232口,只有USB口,自购USB转R232电缆一根。通过这条电缆与三菱PLC、三菱人机、s7-200PLC通讯,无任何问题,现在要与MP277通讯,却怎样也连接不…

    SIMATIC WinCC 2019年6月11日
  • wincc7.3与sql2015安装顺序

    我这边有软件需要安装sql.2015,是先安装wincc7.3及其这次的sql还是可以先安装sql2015 问题补充:先安装wincc这次的sql还是先安装单独的sql215 钻石…

    SIMATIC WinCC 2021年7月5日
  • wincc 安装问题

    我把wincc v6.0 sp2 和SQL卸载掉,装v6.0 sp3。可是在装SQL SEVER 2000 S…

    SIMATIC WinCC 2019年6月11日
  • 博途V13HMI仿真不能用

    装的博途V13,升级到update6 了,安装了STEP7 professional和WINCC professional,为啥HMI不能仿真呢,仿真…

    2017年6月29日
  • wincc如何自动切换数据源?

    请问大家,假若现在有一个400H系统,两块cp443-1分别走两个网络到上位机上,wincc上建立了两个通道分别指向这两个。那么如何让wincc自动设别有一个网络有故障自动切换到另…

    SIMATIC WinCC 2017年11月23日
  • 客户机无画面,重启服务器后正常使用,经常这样,什么原因

    客户机无画面,重启服务器后正常使用,经常这样,什么原因 最佳答案 无画面是连接中断了,先ping ip,看是否通讯有问题是否所有客户机都一样?查一下wincc …

    SIMATIC WinCC 2019年6月11日