CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
不看会后悔的Windows XP之经验谈 简单快捷DIY实用家庭影院
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  Delphi >  VCL组件开发及应用

各位大虾请救急:如何在DELPHI6里有效的使用CHM帮助文件,最好能……

楼主akoan()2002-10-10 21:30:58 在 Delphi / VCL组件开发及应用 提问

各位大虾请救急:如何在DELPHI6里有效的使用CHM帮助文件,最好能像DELPHI6  
  里面的那样,能根据用户所处的情况自动跳至相应的帮助内容。先谢谢各位大哥了。:) 问题点数:99、回复次数:2Top

1 楼linwf(木木)回复于 2002-10-11 13:24:42 得分 29

你可以这样  
      application.HelpFile   :=   'flow.hlp';  
      application.HelpCommand(HELP_CONTEXT,   intIndex);  
  你要在flow.hlp遍写好,intIndex对应某一个页面Top

2 楼cmmi(大彬)回复于 2002-10-11 14:58:47 得分 70

希望下面的文章对你有所帮助!  
  文章来源:http://www.ccw.com.cn/htm/app/aprog/01_5_18_4.asp  
   
  Delphi并不支持HTML   HELP帮助系统,它仍然使用WinHelp。笔者通过反复尝试,发现调用Windows系统目录System32下的HHCTRL.OCX,利用其中的HtmlHelpA函数接口可以自行实现HTML   HELP帮助。    
  公共模块代码如下:    
  unit   HTMLHELPCOMMON    
        
  interface    
  uses   Windows;    
        
  type    
  DWORD_PTR   =   ^DWORD;    
        
  Function      
  HtmlHelp(hwndCaller:HWND;strFile:String;    
  uCommand:UINT;   dwData:DWORD_PTR   ):HWND;    
        
  procedure   CloseHtmlHelp;    
        
  implementation    
  uses    
  SysUtils;    
  const    
  HHControlInstance:THandle=0;    
  dwCookie   :DWORD   =   0;    
  var    
  HtmlHelpA:function   (   hwndCaller:HWND;   pszFile:PChar   ;    
  uCommand:UINT;   dwData:DWORD_PTR   ):HWND;stdcall;    
        
  function   HtmlHelp(hwndCaller:HWND;strFile:String;    
  uCommand:UINT;   dwData:DWORD_PTR   ):HWND;    
  var    
  LFileName:String;    
  p:PChar;    
  begin    
  if   HHControlInstance=0   then    
  begin    
  LFileName   :=   StringOfChar(   '   ',   256);    
  p   :=   PChar(   LFilename   );    
  GetSystemDirectory(p,255);    
  StrCat(p,'\HHCTRL.OCX');    
  HHControlInstance   :=   LoadLibrary(   P   );    
  if   HHControlInstance   =   0   then    
  raise   exception.Create('Help   system   not   installed!'#13'   HTMLHELP   cannot   displayed!');    
  @HtmlHelpA   :=   GetProcAddress(   HHControlInstance,   'HtmlHelpA');    
  if   @HtmlHelpA   =   nil   then    
  raise   exception.Create('Function   HTMLHELP   cannot   loaded!');    
  HtmlHelpA(   0,   nil,$001C   ,   (@dwCookie));    
  end;    
  result   :=   HtmlHelpA(   hwndCaller,   PChar(   strFile   ),   uCommand,   dwData   );    
  end;    
        
  procedure   CloseHtmlHelp;    
  begin    
  if   HHControlInstance<>0   then    
  begin    
  HtmlHelpA(   0,   nil,   $001D,   DWORD_PTR(dwCookie));    
  FreeLibrary(HHControlInstance);    
  end;    
  end;    
        
  end.    
        
  两个函数分别初始化和释放调用接口。其它模块只须按约定调用即可。例如:    
  HtmlHelp(   handle,   htmlhelpfilename+'::/welcome.htm',$0000,   nil);    
  显示htmlhelpfilename对应的帮助文件的welcome页面。    
  上下文敏感帮助需要借用Delphi对WinHelp的支持。当用户按   F1   键时,程序将自动触发OnHelp事件,截获它,编写自己的处理代码即可。    
  ...   ...    
  Application.HelpFile   :=   htmlhelpfilename;    
  tmpOnHelp   :=   Application.OnHelp;    
  Application.OnHelp   :=   AppHtmlHelp;    
  ...   ...    
        
  function   TForm1.AppHtmlHelp(Command:   Word;   Data:   Longint;      
  var   CallHelp:   Boolean):   Boolean;    
  var   ret:integer;Hfile:string;    
  begin    
  if   not   CallHelp   then   exit;    
  AppPath   :=   ExtractFilePath(Application.ExeName);    
  Hfile   :=   AppPath   +   Application.HelpFile;    
  case   Command   of    
  HELP_FINDER,   HELP_CONTENTS:      
  ret   :=   HtmlHelp(handle,   pchar(Hfile),   $0001,   nil);    
  HELP_QUIT:      
  ret   :=   HtmlHelp(0,   '',   $0012,   nil);    
  HELP_CONTEXT:      
  ret   :=   HtmlHelp(handle,   pchar(Hfile),   $000f,   DWORD_PTR(data));    
  end;    
  result:=ret<>0;    
        
  CallHelp   :=   False;    
  end;    
  这样,我们就有另一种方法调用帮助文件,与传统WinHelp调用方法一样:    
  application.helpcommand(HELP_FINDER,   0);    
  application.helpcommand(HELP_quit,   0);    
  ...   ...    
  Top

相关问题

  • 救急:eclipse的帮助系统
  • 如何编写在DElphi中的chm帮助文件!!!!
  • 在delphi中制定.chm格式的帮助文件
  • 如何能够在Delphi中使用.chm帮助文件?
  • 如何在delphi调用*.chm帮助文件
  • 如何在DELPHI中调用CHM格式的帮助文件
  • 在delphi中如何打开chm帮助文件?
  • 50分,求购Delphi调用新式CHM帮助文件源码!
  • 在Delphi中如何调用.chm帮助文件?
  • 如何在Delphi中使用*.chm的帮助!!!

关键词

  • 文件
  • delphi
  • application
  • hhcontrolinstance
  • htmlhelp
  • htmlhelpa
  • 调用
  • callhelp
  • helpcommand
  • hwndcaller

得分解答快速导航

  • 帖主:akoan
  • linwf
  • cmmi

相关链接

  • Delphi类图书
  • Delphi类源码下载
  • Delphi控件下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo