回复:使用了C脚本修改前缀的画面窗口如何再打开子窗口?

n次看你的背影

  • 帖子

    2321
  • 精华

    73
  • 被关注

    53

论坛等级:奇侠

注册时间:2008-03-11

普通 普通 如何晋级?

发布于 2011-09-12 23:22:15

7楼

建议楼主:用Picturewindow来实现,可以参考下面的步骤:
1、在主画面里面建一个Picturewindow,"popbox1",点按钮1弹出“画面窗口B”;
参考脚本如下:
#include "apdefap.h"
void OnLButtonDown(char* lpszPictureName, char* lpszObjectName, char* lpszPropertyName, UINT nFlags, int x, int y)
{
SetPropChar(lpszPictureName,"popbox1","CaptionText","窗口B");//注:popbox1是主画面的Picturewindow
SetTagPrefix(lpszPictureName,"popbox1","结构变量的前缀.");//对结构变量赋前缀
OpenPicturewindowoffset(lpszPictureName,lpszObjectName,"popbox1","B.pdl",0,0);//二次开发的项目函数,定义弹出窗口的位置,并判断弹出的位置
}
2、在画面窗口B里面建一个Picturewindow,"popbox2",点画面窗口B按钮2,在子画面窗口B上弹出“画面窗口C”;
#include "apdefap.h"
void OnLButtonDown(char* lpszPictureName, char* lpszObjectName, char* lpszPropertyName, UINT nFlags, int x, int y)
{
char prefix[20];
strcpy(prefix,GetTagPrefix(GetParentPicture(lpszPictureName),GetParentPictureWindow(lpszPictureName)));
SetTagPrefix(GetParentPicture(lpszPictureName),"popbox1",prefix);
SetTagPrefix(GetParentPicture(lpszPictureName),"popbox2",NULL);
SetPropChar(GetParentPicture(lpszPictureName),"popbox2","CaptionText","窗口C");
OpenPicturewindowoffset(lpszPictureName,lpszObjectName,"popbox2","C.pdl",0,0);//二次开发的项目函数,定义弹出窗口的位置,并判断弹出的位置
}
/////////////////////二次开发的项目函数如下://////////////////////////
#include "apdefap.h"
void OpenPicturewindowoffset(char* lpszPictureName, char* lpszObjectName, char* PicturewindowName,char* PinPName, int Pinpwidth,int Pinpheight)
{
int left,top,objwidth,picwidth,picheight;
struct CC_POINT
{
int iLeft;
int iTop;
};
struct CC_POINT posObject;
picwidth=900;
picheight=700;
left=GetLeft(lpszPictureName,lpszObjectName);
top=GetTop(lpszPictureName,lpszObjectName);
objwidth=GetWidth(lpszPictureName,lpszObjectName);
if(left+objwidth+Pinpwidth posObject.iLeft = left +objwidth+10;
}
else posObject.iLeft = left -Pinpwidth-10;
if(top+Pinpheight+80>picheight){
posObject.iTop = picheight-Pinpheight-30;
}
else posObject.iTop = top ;
SetLeft(lpszPictureName,PicturewindowName,posObject.iLeft);
SetTop(lpszPictureName,PicturewindowName,posObject.iTop);
SetPictureName(lpszPictureName,PicturewindowName,PinPName);
SetVisible(lpszPictureName,PicturewindowName,TRUE); //Return-Type :BOOL
}
/////////////////////////////////////////////////////////////////////////////////////////////////
参考测试贴图如下:

佛对我说:“你的痛苦来自于你的欲望,没有欲望也就没有痛苦!”
评论
编辑推荐: 关闭

请填写推广理由:

本版热门话题

SIMATIC WinCC / Panel

共有32573条技术帖

相关推荐

热门标签

相关帖子推荐

guzhang

恭喜,你发布的帖子

评为精华帖!

快扫描右侧二维码晒一晒吧!

再发帖或跟帖交流2条,就能晋升VIP啦!开启更多专属权限!

  • 分享

  • 只看
    楼主

top
您收到0封站内信:
×
×
信息提示
很抱歉!您所访问的页面不存在,或网址发生了变化,请稍后再试。