求教:wincc界面的问题 点击:1314 | 回复:13



gongkongedit

    
  • 精华:1099帖
  • 求助:0帖
  • 帖子:14392帖 | 54470回
  • 年度积分:0
  • 历史总积分:622
  • 注册:2008年9月08日
发表于:2003-08-17 09:35:00
楼主
在以按键作为触发的事件的时候,我做了一个弹出询问的对话框,为什么再wincc第一次运行的时候询问对话框总不能弹到最前面,怎么解决。十万火急!!!!谢谢



liwansong

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 2回
  • 年度积分:0
  • 历史总积分:2
  • 注册:2007年2月09日
发表于:2008-01-01 23:46:00
1楼

yuanle

  • 精华:0帖
  • 求助:0帖
  • 帖子:9帖 | 10208回
  • 年度积分:2747
  • 历史总积分:48332
  • 注册:2005年4月22日
发表于:2008-01-02 08:30:00
2楼
您需要使用API函数的FindWindow函数来搜寻您的窗口,并且置在最前方,一般的做法并不使用函数来调用弹出式对话框,而是使用画面窗口来显示对话框的画面。

ranranplay

  • 精华:1帖
  • 求助:0帖
  • 帖子:18帖 | 382回
  • 年度积分:0
  • 历史总积分:773
  • 注册:2005年9月27日
发表于:2008-01-03 17:14:00
3楼
同意楼上说法,你的弹出询问的对话框的函数没有给出窗口句柄。

ldldld

  • 精华:0帖
  • 求助:0帖
  • 帖子:132帖 | 725回
  • 年度积分:0
  • 历史总积分:0
  • 注册:1900年1月01日
发表于:2008-01-11 13:18:00
4楼
在窗口属性里设。

heidai

  • 精华:0帖
  • 求助:0帖
  • 帖子:11帖 | 1835回
  • 年度积分:0
  • 历史总积分:2824
  • 注册:2007年5月23日
发表于:2008-01-11 13:20:00
5楼
关注

春华★秋实

  • 精华:0帖
  • 求助:0帖
  • 帖子:103帖 | 1038回
  • 年度积分:0
  • 历史总积分:3013
  • 注册:2007年5月17日
发表于:2008-01-11 15:08:00
6楼
TO yuanle
怎么置在最前方?
C动作如下:
#include "apdefap.h"
void OnLButtonDown(char* lpszPictureName, char* lpszObjectName, char* lpszPropertyName, UINT nFlags, int x, int y)
{
HWND hWnd=NULL;
int iRet;
hWnd=FindWindow(NULL,"WinCC C-Course");
iRet=MessageBox(hWnd,"确认启动泵","Question",MB_YESNO|MB_ICONQUESTION|MB_APPLMODAL);

printf("\r\r Example  3\r\n");
if (iRet==IDYES)
{SetTagBit("DI00",1);
}
else 
{
SetTagBit("DI00",0);
}
}
已经使用了FindWindow函数,但第一次启动WINCC时那个对话框就是不能显示在最前面,第二次以后都可以显示在最前方。

夏天来了

  • 精华:1帖
  • 求助:0帖
  • 帖子:17帖 | 202回
  • 年度积分:0
  • 历史总积分:282
  • 注册:2003年7月29日
发表于:2008-01-15 00:43:00
7楼
WINCC使用MessageBox()是有这个问题,建议不要这么用。

hsbeyond

  • 精华:0帖
  • 求助:0帖
  • 帖子:7帖 | 103回
  • 年度积分:0
  • 历史总积分:162
  • 注册:2002年3月10日
发表于:2008-01-15 08:45:00
8楼
支持楼上的说法
++++++++++++++++++++++++++
上海工控技术群:3072716
QQ:5634889

ranranplay

  • 精华:1帖
  • 求助:0帖
  • 帖子:18帖 | 382回
  • 年度积分:0
  • 历史总积分:773
  • 注册:2005年9月27日
发表于:2008-01-15 10:32:00
9楼
hWnd=FindWindow(NULL,"WinCC C-Course");
这句话有问题
你的WINCC的标题是什么?
中文版的应该这样写
hWnd=FindWindow(NULL,"WinCC -运行系统- ");//注意最后的空格

春华★秋实

  • 精华:0帖
  • 求助:0帖
  • 帖子:103帖 | 1038回
  • 年度积分:0
  • 历史总积分:3013
  • 注册:2007年5月17日
发表于:2008-01-22 15:27:00
10楼
谢谢大家的指点!!
我现在是用VBA做的,感觉方便。用了一个MSGBOX函数

春华★秋实

  • 精华:0帖
  • 求助:0帖
  • 帖子:103帖 | 1038回
  • 年度积分:0
  • 历史总积分:3013
  • 注册:2007年5月17日
发表于:2008-01-22 15:38:00
11楼
TO ranranplay
改了也不行。我的WINCC版本为6.0 SP3。
用VBA如下:
Dim R
R = MsgBox("确认启动泵?" ,4 +48 ,"泵操作画面")
If R = vbYes Then    
HMIRuntime.Tags("DI00").Write 1  
End If

春华★秋实

  • 精华:0帖
  • 求助:0帖
  • 帖子:103帖 | 1038回
  • 年度积分:0
  • 历史总积分:3013
  • 注册:2007年5月17日
发表于:2008-01-23 09:53:00
12楼
今天看了一下,好像是VBS,不是VBA;有什么不同呢?还有VB...

scz11

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 16回
  • 年度积分:0
  • 历史总积分:39
  • 注册:2006年11月01日
发表于:2009-05-08 19:40:23
13楼

以上6楼写的,我试过,编译保存时出现HWND未定义的现象,我试过多次,messageBox前面的HWND只能是NULL,这样,不对消息框处理,下面的画面还能操作。我希望得到象vbs脚本的MsgBox那样,出现消息框,只能对消息框处理之后,才可以再处理其他的。请高手指点。


热门招聘
相关主题

官方公众号

智造工程师