做wincc项目时,如果做热线帮助的话,我认为有下列几个层次:
初级:在画面中用文本来编写,用热键或按钮调出帮助画面;
中级:编译*.hlp文件或*.chm文件,用热键或按钮调出windows格式的帮助;
高级:编译*.hlp文件或*.chm文件,用C语言实现上下文相关的帮助,根据画面上不同图元显示不同的帮助主题;
各位大侠认为对不对?
第二种方式直接运行*.chm文件,例如:
ProgramExecute("C:\\WINDOWS\\hh.exe c:\\calc.chm")
比较简单,关键是两点:
一、编译一个好看的*.chm文件;
二、当WINCC项目运行时,如果屏蔽了Ctrl+Alt+Del键,可能会出现多次打开*.chm文件的现象。解决方法是检测程序是否已经运行,已经运行的话,将其设为前台显示;如果尚未运行,则运行它,例如:
HWND Handle= NULL;
Handle= FindWindow("OMAIN",NULL);
if(Handle)
{
ShowWindow(Handle, SW_MINIMIZE); // This entry is only necessary for Windows 2000
ShowWindow ( Handle, SW_SHOWNORMAL );
SetForegroundWindow(Handle);
}
else
ProgramExecute("C:\\MSOffice.97\\Office\\ACCESS.EXE");
实现第三种所谓的图文相关的帮助其实并不难。有VB或DELPHI编程经验的同行一定记得很多控件有HelpType和HelpContext属性吧。用C语言直接调用HLP文件,实现上下文相关的帮助,直接跳到你所需的页面,也很简单:
#pragma code("user32.dll")
BOOL WinHelpA(hwnd, lpszHelpFile, fuCommand, dwData);
#pragma code()
#define HELP_CONTENTS 0x0003L
void WinHelpApi()
{
HWND hwnd; /* handle of window requesting help */
char HelpFile【255】;
UINT fuCommand; /* type of help */
DWORD dwData; /* additional data */
BOOL bRetVal;
LPCTSTR lpszHelp;
lpszHelp = HelpFile;
strcpy(HelpFile, "c:\\Win.95\\Help\\Calc.hlp");
hwnd = FindWindow("PDLRTisAliveAndWaitsForYou","WinCC Runtime - ");
fuCommand = HELP_CONTENTS;
dwData = 0L;
bRetVal=WinHelpA((DWORD) hwnd,(DWORD) lpszHelp, fuCommand, dwData);
printf("hwnd: %d \r\n",hwnd);
printf("HelpFile: %s \r\n",HelpFile);
printf("bRetVal: %d \r\n",bRetVal);
}
其实困难的倒是编辑图文并茂的.hlp文件,因为你要计划好各个主题,并在WINCC的不同地方调用他们
公司简介:
上海瑞夫机电科技有限公司是一家专门从事变频节能技术、贸易、服务的专业公司,公司总部设立在上海。依靠雄厚的技术力量,在充分为客户考虑的原则下,经过长期的努力,在产品选型、产品的售前、售后服务方面做出了突出的成绩。
现我公司成功的与世界各地的变频产品生产企业建立了良好的关系,并得到了他们的大力支持。凭着自身的努力和坚持为客户服务的方针,我们将做的更好、更强!
我司主要产品:国外各种变频器、PLC等现代工业控制产品;
我们的服务宗旨是:公司所经营的产品均通过 ISO9001-2000 系列质量体系认证,在满足客户需求的情况下,您将得到最优越的服务和最质优价廉的产品。
网 站: http://shruifu.b2b.youboy.com/
联系方式: T:021-67723023 13818569113
F:021-67723023
Q Q: 43796301
邮 箱:shruifu@163.com
地 址:上海仓桥工业区威氏工业园玉秀路39号