首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > VFP >

怎么在vfp9.0中调用chm帮助文件的第8页

2012-03-01 
如何在vfp9.0中调用chm帮助文件的第8页?如何在vfp9.0中调用chm帮助文件的第8页?下面是6.0以前的例子,在9.0

如何在vfp9.0中调用chm帮助文件的第8页?
如何在vfp9.0中调用chm帮助文件的第8页?
下面是6.0以前的例子,在9.0中如何使用,大家给个例子,谢谢!!!

如果在 VFP 6.0 中用 set help to helpfile.chm 命令并用按下 F1 调用帮助文件不会有问题。
但是在 VFP 5.0 或 VFP 3.0 中,使用 set help to helpfile.chm 命令后,若按 F1 想调用帮助文件时会发生系统错误。
因此,可以象以下示例一样来调用一个指定位置处的指定的 .chm 帮助文件中的指定的主题文件
1. 如果你的系统中没有注册 Hhctrl.ocx 按以下方法注册它
在 Visual FoxPro 3.0 和 3.0b, Regsvr32.exe 位于 \Vfp\Samples\Ole 目录, 在 Visual FoxPro 5.0 中, Regsvr32.exe 位于 \Vfp 目录.在 DOS 提示符下,用以下方法注册: 
Regsvr32 Hhctrl.ocx
2. 修改 vfphtml.prg,修改变量 lcSampleHelp,lcHhctrl 和 lcTopic 的值. 这些变量包含 .chm 和 Hhctrl.ocx 的位置和要显示的主题的信息. 
3. 进入 Visual FoxPro 并运行该程序.
4. 你指定的位置的 .chm 文件中的指定主题将会显示在屏幕上.
请注意示例中 hhctrl.ocx 所在的位置,在你的应用中,应为你的 hhctrl.ocx 指定适当的位置
以下示例假在你的电脑的设你有一个 C:\vfphtml\ 目录,且其中有一个 vfphtml.CHM 帮助文件,该帮助文件中包含有一个 page2.htm 文件。

以下是示例程序

* 在 Visual Foxpro 中用 HTML Help API 显示一个 HTML 帮助文件.
#DEFINE HH_DISPLAY_TOPIC 0

* 修改该行来反映你的 Chm 文件位置
lcSampleHelp = "C:\vfphtml\vfphtml.CHM"

* 修改该行来反映你的 Ocx 文件位置
lcHhctrl="c:\vfphtml\hhctrl.ocx"

* 修改该行来反映你的帮助文件中的 .htm 文件
lcTopic = "C:\vfphtml\vfphtml.CHM::/page2.htm"

* 该函数 取决于 生成 html 帮助文件的计算机的 hhctrl.ocx 版本
DECLARE INTEGER HtmlHelp IN (lcHhctrl) INTEGER hwndCaller, ;
STRING pszFile, INTEGER uCommand, INTEGER dwData

* 确定调用程序的 hwnd
* mainhwnd() 将告诉我们 VFP 桌面的名柄
SET LIBRARY TO SYS(2004) + "foxtools.fll"
m.hwndCaller = mainhwnd()
SET LIBRARY TO

NULLVALUE = 0

* 返回值是 html 帮助窗口的窗口句柄
* 在默认的帮助窗口中显示指定位置(C:\vfphtml\)中的指定帮助文件(vfphtml.CHM)中的指定主题(page2.htm)
hwndHelp = HtmlHelp(m.hwndCaller,;
"C:\vfphtml\vfphtml.CHM::/page2.htm",HH_DISPLAY_TOPIC,NULLVALUE)


[解决办法]
VFP中应用帮助文件,如何在任何表单中实时启动帮助文件中的某一条?其ID如何得到? 

在VFP中,我已完成了HELP的文件编译与运用,但不能有任一表单中调用帮助文件中的某一帮助条款。需实现的功能:
如一表单A中有一command按钮,当光标走到command按钮时会自动显示“这是什么?”当点击“这是什么?”时,则启动HELP的相应帮助条款!
  各位高手怎么实现这一功能呢?

*----------------------------



如果你采用id方式,你需要:
1、在help文件中知道相应帮助条目的id
2、在系统开始时,执行
set help on
set help to 文件名
3、当点击“这时什么”时,执行
help id 条目的id
如果不采用id方式,可以:
1、在系统开始时,执行
set help on
set help to 文件名
2、当点击“这时什么”时,执行
help 你希望显示的topic



-------------------------------------------------

方法步骤: 
1\将表单属性whatthishelp及whatthisbutton设置为.t. whatthishelpid设置为-1 
minbutton及maxbutton设置为.f. 
2\添加表单的属性helpprev 
3\表单的init代码:thisform.helpprev=set("help",1) && 保存原系统的帮助文件 
4\表单的click及activate代码: 
set help to addbs(justpath(sys(1271,thisform)))+"帮助文件名称.hlp" 
5\打开需要设置的控件的属性,将whatthishelpid=11 
&& 11与已经制作好的"帮助文件名称.rtf"的脚注标识的对应数值相同,如:aaa=11 
&& 先在word软件中制作"帮助文件名称.rtf",然后制作"帮助文件名称.hlp"(可用microsoft help workshop 软件). 

全部完成后,在使用时单击表单右上角的?按钮,然后鼠标单击已经设置的控件,会显示"帮助文件名称.rtf"中相关的信息. 
(制作"帮助文件名称.rtf"及用microsoft help workshop 软件制作"帮助文件名称.hlp"的方法略) 


---------------------------------------------------
是因为缺少相关的资源文件 foxhhelp9.exe、foxhhelpps9.dll。foxhhelp9.exe运用之后就能调用了。 
还可以通过api方式调用的。 

* help ID thisForm.helpContextID 
* 可将 help ID 替换为 do helpId with .... 
do helpid with 1001 && 如调用编号为“1001” 

* 功能描述:API方式调用CHM帮助文档(不用foxtools.fll获取窗口句柄) 
* 参数说明: tnTopic = 调用主题编号 
function HelpId 
lparameters tnTopic && 主题编号 
declare integer FindWindow in WIN32API string,string 
declare integer HtmlHelp in hhctrl.ocx integer hwndCaller,;
string pszFile,integer uCommand,integer dwData
local lcHelp,lhwndCaller 
lcHelp = 'rsgzhelp.chm' && chm帮助文档的位置 


* 用FindWindow,省去用foxtools.fll中的mainhwnd()函数了 
lhwndCaller = FindWindow(0,_screen.caption) 
* 若调用主题不存在(不显示),再用主题编号为0调用显示出chm 
if HtmlHelp(lhwndCaller,lcHelp,tnTopic,0) = 0 
HtmlHelp(lhwndCaller,lcHelp,0,0) && 编号不存在则为0 
endif 
endfunc 

[解决办法]
HelpContextId 控件帮助关联
*-------------------------------------------------
出处:http://dkfdtf.blogbus.com/logs/14090415.html

转自:http://www.zhangyongjun.com/blog/article.asp?id=146

帮助文档制作出来了之后,那如何在软件每个界面中能够实现按下 F1 键就打开帮助文档的相应页面,比如在“会员管理”窗体中按下 F1,就能在帮助文档中直接看到会员管理相关的帮助信息。用 HTML HELP WORKSHOP工具进行编译,编译前做一下下面的工作,就可以实现关联 HelpContextId。

先建立一个头文件,比如 helpId.h 然后象下面那样定义 helpcontextid

//前言 
#define idh_bqsm 1010 //版权申明
#define idh_xkxy 1020 //最终用户许可协议

//安装与卸载
#define idh_yxhj 3010 //运行环境
#define idh_rjaz 3030 //软件安装
#define idh_xz 3040 //卸载

//技术支持
#define idh_shfw 5010 //售后服务
 
然后在 project 页中选择 htmphelp api information
在 map 页中用 header file 将头文件加入
然后选择 alias 页,用 add 将 id 和 html 关联起来,在第一栏中输入一个已定义的常量比如 idh_bqsm,在第二栏里选择一个页面
编译
从菜单选择 test\htmlhelp api
command 选择 hh_help_context
再 map number 中输入一个 id 按 test 如果正常应该条转到正确的页面

热点排行