给我你的mail,我给你发个完整的程序 [email protected]

解决方案 »

  1.   

    他人之玉,借花献佛。到了关键的时候了 !由于目前HTML Help只有VC的头文件和库。要在Delphi中使用只能自己来啦。下面是我研究HTML Help的过程。经过分析,发现 HTML Help的使用的核心是HHCtrl.Ocx。OCX使用在Delphi中简直是太方便了。于是我就从Delphi中Install ActiveX。妄想把HHCtrl.OCX直接放到 Tool Panel上,结果HHCtrl.Ocx死活不能显示在Delphi的列表中,真是个顽固分子!后来我决定直接使用它。于是我把HHCtrl.Ocx当作普通的DLL加载。挑出了核心的HtmlHelpA函数(我没有处理双字节的函数所以HtmlHelpW我就管了)。接着我花了一个小时把HTMLHelp.H 翻译到了PAS。并增加了几个函数和变量以处理DLL的加载和卸载。于是只要有一个HTMLHelp_Decl.PAS 就可以搞定了。 言归正传,现在说说本例中Delphi如何使用这个文件。HTML Help的核心使用函数是 HtmlHelpA,声明如下:function HtmlHelpA hwndCaller:HWND; pszFile:PChar ; uCommand:UINT; dwData:DWORD_PTR ):HWND;stdcall; 所有到特定页面的引用都通过pszFile传递,uCommand表示某种操作。关于字符串传递的命名规则和Command的说明,请参考HTML Help workshop的联机帮助的API 章节。 我做的工作如下:封装了HHCtrl.OCX的调入,卸载,和HtmlHelpA。加入了两个函数:function HtmlHelp( hwndCaller:HWND; strFile:String; uCommand:UINT; dwData:DWORD_PTR ):HWND;procedure CloseHtmlHelpSystem;所有的操作都通过这两个函数搞定 !  HTMLHelp_Decl.Pas 使用方法:uses HTML Help_Decl.PAS; ....procedure TForm1.Button1Click(Sender: TObject);begin// 显示一个页面,函数内部自动加载 HHCtrl.OCX,并初始化HtmlHelp( handle, AppPath+'\Sample.chm::/HelpContent\index.htm', HH_DISPLAY_TOPIC, nil); end; ....procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction); begin HtmlHelp( 0, '', HH_CLOSE_ALL, nil ); // 关闭你打开的所有帮助CloseHtmlHelpSystem; // 卸载HHCtrl.OCXend; 
      

  2.   

    crack007(也许不是) 老兄十分感谢你的关注
    可能你还没怎么听明白我的意思(也许是我描述
    的不太清楚)我说的是上下文帮助而不是帮助上
    下文,你说的这些我已经实现了。
    我的意思是当标题栏上有帮助按钮的时候,你点
    击帮助按钮,然后再在窗体点击你要帮助的地方,
    出来一个类似于HINT的东西,这个在VB中实现是
    非常容易的,可是在DELPHI中 :( 我不会