说三道四技术文摘-感悟人生的经典句子
说三道四 > 文档快照

在VB中如何调用chm帮助文件?

编辑:说三道四文库 发布时间:2017-02-26 11:17
HTML文档下载 WORD文档下载 PDF文档下载
在VB中如何调用chm帮助文件?
用app.helpfile=app.path+"readme.chm"可在VB中用F1调用,可是用command1按钮如何调用.(不用sendkeys"{F1}")
用ShellExecute.

Private Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" _
    (ByVal hwnd As Long, ByVal lpOperation As String, ByVal lpFile As String, _
    ByVal lpParameters As String, ByVal lpDirectory As String, ByVal nShowCmd As Long) As Long

然后这样调用:
ShellExecute 0&, vbNullString, App.Path & "\readme.chm", vbNullString, vbNullString, vbNormalFocus

如何在Visual Basic 6中使用HTML Help(.CHM)。

  大家都知道在Visual Basic 6中可以通过ActiveX控件“Microsoft Common Dialog Control”调用WinHelp帮助文件,那么是否可以用同样的方法调用HTML帮助文件呢?

  I am sorry,答案是否定的。

  但是 Visual Basic 6 本身支持HTML帮助,我们完全可以直接调用HTML帮助文件而不借助于其它任何ActiveX控件或Windows API函数。

  你可以在工程属性中设置所需要使用的HTML帮助文件,或是在程序中直接将成员变量App.HelpFile( = help_file_name)的值设置为程序所需使用的帮助文件名,如上例应使用语句 App.HelpFile = "C:\Learn\Learn.chm" 来设置所需的帮助文件——当然,使用这样绝对的路径我并不赞成——你可以改为 App.HelpFile = App.Path + "Learn.chm"。然后在窗体上添加一个“帮助”按钮,并在该按钮的单击事件中添加如下代码(假设该按钮的Name属性为“cmdHelp”):

Private Sub cmdHelp_Click()

 cmdHelp.HelpContextID = 1 '选定ID号为1的主题

 SendKeys "{F1}"

End Sub

  当然,该按钮的HelpContextID属性值可以根据实际情况改为其它数值。OK!你的程序已经添加了美观而又方便的HTML帮助,能为你的程序增色不少呢!

上一版的《HTML Help 制作和使用》中没有讲到如果在Visual C++ 6中使用HTML Help,因为那时我还没把VC学好。在我用VC调用了HTML Help之后,才发现用VC调用HTML Help并不是一件简单的事。

  在Visual C++ 6中调用HTML Help没有现成的函数,需要调用HtmlHelp()这个API函数。而在调用这个函数之前,还需要在你的工程中加上HtmlHelp的库和头文件:

  1. 指定HtmlHelp.h的路径。选择菜单“Project -> Settings...”,打开“Project Settings”对话框。选中“C/C++”选项卡,选择“Category”列表框的内容为“Preprocesor”,在“Additional include directories”项中填入包含“HtmlHelp.h”这一文件的路径。这个文件你可以在你的硬盘上找,如果你安装了“HTML Help Workshop”,那么在“HTML Help Workshop”程序目录下有个“Include”目录就是。
  2. 指定HtmlHelp.lib的路径。按照与前面类似的方法,选择“Link”选项卡,选择“Category”为“Input”,在“Additional library path”中填入包含“HtmlHelp.lib”文件的路径。同样,在“HTML Help Workshop”程序目录下的"Lib"目录就是。
  3. 指定Lib文件。同样在“Link”选项卡中,选择“Category”为“General”,在“Object/librarie module”中填入“HtmlHelp.lib”。
  4. 最后,将HtmlHelp.h包含在程序中。你可以选择一个合适的位置加入“#include <HtmlHelp.h>”这一句话,但我建议你将这句话加入到“Stdafx.h”中。
  注:以上所有内容在MSDN的“Including HTML Help Support Files in an Application”主题中均有介绍,在“搜索”选项卡中输入查找内容为“HtmlHelp”即可找到该主题。

  最后是大家都关心的问题,如何在程序中调用HTML Help。

  如同在Visual Basic 6中使用HTML Help一样,首先需要定位帮助文件的位置。假如我们把帮助文件(.chm)放在程序路径下,那么我们该如何去获得程序路径呢?程序大本营上是使用的API函数GetModuleFileName(),例如,我使用以下代码定位程序路径和取文件的完整路径文件名:

  CString appPath;
  GetModuleFileName(NULL, appPath.GetBuffer(MAX_PATH), MAX_PATH);
  //注:使用该API函数得到的是程序文件完整路径文件名,去掉文件名后才是路径。
  appPath.ReleaseBuffer();
  int n = appPath.ReverseFind('\\');
  CString helpFile;
  helpFile = appPath.Left(n);
  TCHAR c = helpFile.GetAt(n - 1);
  if(c == '\\')
  helpFile += "HtmlHelp.chm";
  else
  helpFile += "\\HtmlHelp.chm";

通过HtmlHelp调用帮助文件(.chm)的程序代码如下:

  HtmlHelp(NULL, (LPCSTR)helpFile, HH_DISPLAY_TOPIC, 0);
  //直接打开帮助文件的默认主题。

  或

  HtmlHelp(NULL, (LPCSTR)helpFile, HH_HELP_CONTEXT, 1);
  //打开其中一个主题,实现上下文相关的帮助调用。 

  如此,在Visual C++ 6中,你也能调用HtmlHelp了。这次可是用的API函数,也就是说,略为改动你就可以用于……
使用HtmlHelp:
Const HH_DISPLAY_TOPIC = &H0
Const HH_CLOSE_ALL = &H12

Private Sub cmdOpen_Click()
    Dim hwndHelp As Long
    hwndHelp = HtmlHelp(hWnd, app.path+"readme.chm",HH_DISPLAY_TOPIC, 0)
end sub

Private Sub Form_Unload(Cancel As Integer)
    HtmlHelp Me.hWnd, "", HH_CLOSE_ALL, 0
End Sub


工程属性-〉选定帮助文件即可。
GZ
从南极之争谈软件架构十个技巧,及成功团队具备的气质 Imation重拳出击,推出新型混合存储平台 张建华:FusionSphere不是简单的OpenStack发行版 Chrome 29来了:地址栏变得更“兼容” Android版增WebRTC 工程师谈在Facebook工作最糟糕的事情 用Scala重构19楼——SDCC 2013讲师王治专访 10款最新且超实用的开发框架 创业公司为什么应该写博客? 向iOS SDK看齐:Facebook Android SDK迎来重大更新 闯向海外:对话AppFlood产品总监陈霄 高手爱跨界:联想智能桌面,27寸大Pad抢先试玩 惠普第三季度收入272亿美元同比下降8% 高管重新布局 原来我们会出这个价钱购买“廉价”iPhone Web设计过程中该做和不该做的 新细节披露:通过电信合作 美国75%网络遭NSA监控 实时Bug检测工具Bugsnag发布API更新 【观察】一大三小:亚马逊,微软、谷歌、IBM ,IaaS四足鼎立 “化云为雨”一小滴:北京,3G手机+蓝牙打印机实现智能抄表 金山云与蓝汛联合提供云基础设施服务 MongoDB出新招,增加对Hive的支持 编程语言收入榜 Java排第三 直接拿来用!10段超有用的Git命令行代码 Google Cast SDK正式版发布:自动适配,修复Bug 频受红杉资本青睐,商业智能初创公司Birst靠的是什么? 2013百度世界大会要点精华回顾 WebApp开发框架Clouda、轻应用... 对新手有用的JavaScript开发小建议 磨剑三载,且看从容应对14.3万TPS的Twitter是怎样炼成的! 兰亭集势:被高估的“长尾式采购” 谁说WP手机不行?微软称已成拉丁美洲第二大移动平台 Windows 8之父Steven Sinofsky加盟风投机构A16Z SDCC 2013演讲议题抢先看 腾讯、阿里、支付宝、网易…… ADO的连接 高分求解,如何取得默认打印机支持的纸张类型? 用deamweaver ultradev 做的asp怎么修改可以与数据库连接?? 时间问题 ADO连接问题 如何设置串口的流量设置,?设置为无. 请问怎么给JTabPane上各个JPanel(如:JPanel1,JPanel2)使用setMnemonic() 找不到确切哪一天的记录? 各位高手,为什么我在用NMUDP发送数据时当接收端程序没有启动的时候总是提示Stream Write Error,是什么原因,怎么才能让这个错误提示不出现 《机械原理》课有感 大哥 怎么在网上查到这的硬盘是不是水货好像输一个序列号就可以是不是 有谁能提供计算机及应用专业的本科毕业论文,最好是数据库方面的? 注册crystal report 都需要哪些.dll呢 如何能够同时DownLoad多个文件,就像OutLook的文件添附功能? 从sql serevre 6.5 升级到 sql server 2000后 原先的中文字段为何是乱码?急! 怎样用select下拉菜单的双击事件实现页面的提交?? 圣诞节要到了,mm 的命令也到了,要我准备好money,大家帮我出出注意啊~~~~~~~~ 请教各位jsp高手 office2000英文版无法uninstall sorry,应该是如何检测一个按纽被单击 初学JAVE需要什么软件? 请教:计算机四级和程序员、高级程序员的难度比较! 高手请指点,关于dns配置问题 help !访问数据窗口整行数据,怎么不能出数据??? 请问:如何用C语言打开一个在指定路径的文件(在源程序所在目录的子目录中)? 哪有中文版的.NET类库大全可以下载??? 为什么ie5下和ie6下显示不同?关于session.情赐教。 请问nmudp使用的时候怎样得到对方传来的字符串? 请教delphi大哥.多线程 计算机四级和程序员、高级程序员的难度比较? 不好玩, 不玩了 最近水园里怎么这么多人失恋啊????? 控件高手看过来{;-< 高分求教javamail问题??!! VB与VC编的Dll之间传字符串 为什么不能发邮件啊 请问怎样实现两个不同局域网之间机器用udp协议传送信息? 哪里有信封输入与打印软件?信封处理软件? VB6 MDI 窗体的背景图能Resize吗 ? C/S事务控制问题!!!!为什么的Database.commit后不能更新数据库? puppet(小虎) 在不在? 谢谢各位,sorry.刚才我说的不太准确 巨好回答的问题,不可不答,答了还想答,答完一遍又一遍。。。 给个建议: 近来想买台电脑, 不知 5999 的 福日N610 值不值得考虑 在VC中怎么样把一个CHM文件,挂在它的帮助上面!谢谢大虾! ( 12-13) 从sql serevre 6.5 升级到 sql server 2000后 原先的中文字段为何是乱码?急!加急! >>>>>>>>>>>>>>>>>>>>>>>树状层次结构数据问题?<<<<<<<<<<<<<<<<<< 关于id号连续的问题! 怎么样在asp中用javascript从jsp中取回的变量给asp用呢! 弱问题:vc中有象vb中isnumeric() isdate()之类的api直接判断???? STL高手请进:嵌套Template 配置500克质量分数为20%的盐酸,需质量分数为38%的盐酸多少克? ph=4.6 0.1mol/L的磷酸缓冲液配制 谁知道edta与硫酸铜反应 配制400g质量分数为10%的稀盐酸需要80%的盐酸多少克? 500ml 氢离子 物质的质量的浓度为2mol/L 的硫酸溶液中含硫酸多少 物质的量浓度为2mol/L的硫酸溶液250mL,含有硫酸的质量是多少 如何配制PH2.10.0的PBS(磷酸缓冲液)? 浓度为2mol的H2SO4 500ml,h2so4的物质的量 在NH3存在下以EDTA滴定Zn2+离子,能够增大滴定突跃范围的是A.适当增加酸度      B. 增加NH3的浓度C. 增加缓冲液的用量    D. 降低酸度 如何配制PH=10的缓冲液 0.1mol/L磷酸钾缓冲液 PH7.3怎么配制啊? 用0.01mol/L NaOH溶液滴定0.01mol/L的H2SO4溶液中和后加水到100mL.若滴定时终点判断有误差:①多加了一滴NaOH,②少加了一滴NaOH.(设1滴为0.05mL),则①和②溶液中C(OH-)之比值是?答案 是 10^4,不知道怎么 PH为3和8的PBS缓冲液如何配置啊 有一个铝球,球的质量是54g,体积是50cm³,已知铝的密度是2.7×10³kg/m³如果铝球是空心的,那么空气部分是多大?如果给空气部分灌满水,则该球质量是多少? 0.01mol/l h2so4滴定 0.01mol/l naoh,中和后加水至100ml多加一滴h2so4和少加一滴h2so4(设一滴0.05ml)的c(h+)的比值为?答案10^4 计算题:实验室质量分数为98%的浓硫酸,配制质量分数为10%的稀硫酸196G,需98%的浓硫酸多少克? 哪种金属的密度为2.7x10³kg/m³ 0.01mol/l硫酸滴定0.01mol/l烧碱,中和后稀释至100ml.若滴定至终点由于判断有误,甲多了一滴,乙少了一滴(20滴为1ml)求甲和乙C(h+)的比值 答案是10的4次 为什么 实验室需要配制质量分数为20%的稀硫酸溶液500克,需要质量分数为80%的浓硫酸多少克?水多少克? 含吐温20的PBS怎么配啊?吐温20对细胞活性有影响吗? 常温下,0.01mol/L 硫酸滴定0.01mol/L氢氧化钠溶液,中和后加水至100mL.若滴定时终点判断有误1多加了1滴硫酸 2少加了1滴硫酸(设1滴为0.05mL),则1和2两种情况下所得溶液的ph之差是? 实验室需要196克质量分数为20%的稀硫酸,需用多少克质量分数为98%的浓硫酸来稀释? 如何配制吐温-20磷酸缓冲液 用0.01mol/L 硫酸滴定0.01mol/L氢氧化钠溶液,中和后加水至100mL.若滴定时终点判断有误1多加了1滴硫酸各个数据怎么凑到一起的啊. 实验室与配制质量分数为20%的稀硫酸500毫升,需质量分数为98%的浓硫酸和水各多少升? 将2mol/L的硫酸铜和1mol/L的硫酸等体积混合,求混合们后硫酸的物质的量 (1)物质的量浓度为18.4mol/L的硫酸与等质量的水混合所得溶液的物质的量浓度( )9.2mol/L填小于 为什(2)物质的量浓度为18.4mol/L的硫酸与等体积的水混合所得溶液的物质的量浓度( )9.2mol 实验室用98%的浓硫酸配制1000g质量分数为20%的稀硫酸来做试验,则需要98%的浓硫酸和水多少ml(98%浓硫酸密度:1.84g/cm3,水的密度1g/cm3明天期末考试, 含硫酸铜和硫酸的混合溶液200mL,其中硫酸铜的量浓度为1mol/L,硫酸量浓度为0.5mol/L,若用此溶液配成0.2ml/L硫酸铜和2mol/L硫酸的混合溶液,求所得溶液的体积为多少毫升?需加入1.84g/cm3、98%的浓硫酸 有一质量为8.1kg的空心铝球,空心部分体积是总体积的0.7倍,若将此球轻轻放入水中,静止时他受浮力多大?(铝密 一只铝球体积为20cm3,质量是27g,它是实心还是空心的?若空心,中空部分多大?若在中空部分装满水银总质量是多少?请给我完整过程,1 含硫酸铜和硫酸的混合液200毫升,其中硫酸铜物质的量浓度为1摩每升,硫酸物质的量的浓度为0.5摩每升,若用...含硫酸铜和硫酸的混合液200毫升,其中硫酸铜物质的量浓度为1摩每升,硫酸物质的量 水质硬度达到了11.8mmol/L..每天用水量达到150吨左右,可以用石灰法么?水质硬度达到了11.8mmol/L..每天用水量达到150吨左右.如何采取经济、简单、省力的办法?可以用石灰法么?我想知道石灰法的 就是标定,未必你配制好的PH=10的氨氯化铵缓冲溶液不标定?人就是应该不断地进步,不懂的就要不断的学习,没有谁好不的了的,我们的领导每次配了的氨氯化胺缓冲溶液都要拿来校准,她是 什么是PBS缓冲液 PH 8.0的EDTA溶液怎么配制 将100mL98%密度为1.84g/cm3浓硫酸与400mL蒸馏水混合制成1.225g/cm3稀硫酸 求稀硫酸中溶质分数 物质量浓度注意溶液体积的变化(要过程) 一个铝球,质量为5.4kg,而体积为3000cm3,⑴那么这个铝球是否为空心的? ?⑵若为空心的,其空心部分注满铜,则此球的总重量又是多少?(铜、铝的密度分别是8.9×103kg/m3,2.7×103kg/m3) 急!在线等! 13%,pH=13的EDTA溶液怎么配制在线等快, 有三块铜合金.其中有两块质量相等,这两块合金中金与铜的质量比分别是3比5和2比7;第三块合金的质量是三块合金质量的一半,但金与铜的比是1比3.现在把三块合金融在一起,求新合金中金和 一道物理题:一个空心铝球的质量为27g.一个空心铝球的质量为27g,它能漂浮在水中且有四分之一个球露出水面,已知铝的密度为2.7*10的三次方kg/m³ 求此铜球体积和空心体积! 将98g的H2SO4溶于500ml水所得溶液中H2SO4的物质的量浓度为2mol/L,这句话为什么是错误的? 有三块金---铜合金,其中有两块质量相等,这两块合金中金与铜的质量之比分别是3:5和2:7,. pbs缓冲液ph=7.4如何配制 铝箔密度 欲配制PH=9.0的NH3-NH4CL缓冲溶液,若用去了100MOI/LNH3溶液,则需称取多少克NH4CI固体? 磷酸缓冲液如PBS为什么易染菌?pbs营养远没有培养基丰富,为什么易染菌? 现有含H2SO4和K2SO4均为0.5mol/L的混合液300ml ,为配置成含H2SO4和K2SO4物质的量浓度分别为2mol/L和0.2mol/L,加入浓度为18.4的硫酸多少毫升,再用水稀释?(我想要求K2SO4或者H2SO4的物质的量,他们的体积是 NH4CL-NH3 ph=10缓冲溶液怎么配 如何配制0.1mol,ph(3.0 3.5 4.0 4.5.7.0)磷酸缓冲液我是做生物学试验的主要是多酚氧化酶特性研究方面的 现有k2SO4和H2SO4的混合液100ml,其中K2SO4的物质的量浓度为0.5mol/L,H2SO4的物质的量浓度为1mol/L,现要求将上述混合溶液中K2SO4的浓度改为0.2mol/L,H2SO4的浓度改为2mol/L,应加入98%(密度为1.84g/cm3)的硫 1mol/l NH3-NH4Cl缓冲溶液的ph值怎么计算 0.1mol/l,PH=8.6的磷酸缓冲液怎么配制 现有k2SO4和H2SO4的混合液100ml,其中K2SO4的物质的量浓度为0.5mol/L,H2SO4的物质的量浓度为1mol/L,现要求将上述混合溶液中K2SO4的浓度改为0.2mol/L,应加入98%(密度为1.84g/cm3)的硫酸多少毫升?然后加水 计算配制100g溶质质量分数为16%的氯化钠溶液所需氯化钠多少克?水多少克 请问0.1mol/L PH=10.5 磷酸缓冲液PB怎么配制? EDTA滴定硫酸铜,加入六次甲基四按溶液(pH=5.5)用PAN做指示剂,颜色变化是什么呢,怎么滴都感觉不对 氨性缓冲溶液的配制 具体要求,是要1mol/L的氨-氯化铵缓冲溶液,Ph=10的,怎么配?我想知道这个浓度有什么关系呢?我只有500ml的容量瓶,不要给我说稀释至1L. 0.1mol/l ph=8.0的磷酸缓冲液怎么 碘化钾溶液加硫酸铜试液颜色如何变化?如果先加edta再加硫酸铜如何变化?
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn