找回密码
 注册
搜索
查看: 5853|回复: 0

软件热点敏感帮助的实现

[复制链接]
发表于 2006-12-27 12:48:36 | 显示全部楼层 |阅读模式
  很多人问起现在的CHM帮助文档如何作为软件的热点敏感帮助,网上搜索的资料也不多,可能是太简单了吧,呵呵!今天整理了一下,详细的介绍在VC开发的软件中对CHM帮助文档的调用方法以及CHM帮助文档的制作要求。
3 g4 m! h+ v; C) X% {9 L/ v6 \( I! c6 \/ J7 L/ @! L* P$ e  C
一、软件中对CHM帮助文档的调用方法( P9 j- c: Z! b& {& ~9 H7 U/ g6 n

; r! y+ J3 v; f" c% h  VC中调用CHM帮助必须用API函数HtmlHelp(),此函数在LIB库函数内,为方便调用,我把它整体打包了,您要做的就是把它放到VC工程所在的目录,然后包含CHMHelp.h头文件即可。  e" l" |+ @4 q( m* x
系统包含文件如下:
9 V& y: W3 L( H9 f: f7 v) _
) x3 c) }/ b! v5 L: T
  1. #include "CHMHelp.h"
    : g0 b3 N! a* J8 M. X

  2. + `: s! U- {, X& Q+ v
  3. BOOL CDataDlg::OnInitDialog()
    4 o! M4 i% O/ p3 p
  4. {
    # H; |& B; E5 m/ T( T% n$ k$ W
  5.         CDialog::OnInitDialog();
    ; ~3 z, H! F. e0 L" X7 s, S3 U1 b. j' f
  6.         SetWindowContextHelpId(IDH_WJH_0300702025);- V( O6 L7 \# _$ A" i
  7.         return TRUE;
    " T2 d' t& l  [
  8. }
复制代码
: [. n2 v& W3 C2 J+ R4 |
  上述代码中IDH_WJH_0300702025为在CHMHelpID.h中定义的敏感帮助的页面ID,设置了ID后在需要显示帮助的过程中(一般是用户按F1)增加如下代码:
  1. BOOL CMainFrame::OnHelpInfo(HELPINFO* pHelpInfo)
    5 Z: C3 w3 L% P( T+ R# ~1 O
  2. {
    7 f" f' p6 A) G: Y$ h$ l
  3.         HWND hWnd;
    6 v, k; N6 k* a0 }0 R
  4.         if(pHelpInfo->dwContextId > 0) 4 G) x- z7 J% w9 [. j
  5.                         hWnd = HtmlHelp((HWND)pHelpInfo->hItemHandle,
    ; _* e5 G- Z( r1 i* V" K
  6.                                         theApp.m_szHelpFile, ) y6 U  B. J# R7 ~
  7.                                         HH_HELP_CONTEXT, 8 j0 c) g% `9 R  s% S
  8.                                         pHelpInfo->dwContextId);) T0 U) p+ K0 p$ z3 ?
  9.         else 9 M: @/ d. v$ f  _5 K) f
  10.                         hWnd = HtmlHelp((HWND)pHelpInfo->hItemHandle, + Y! m0 ]# A) u4 \0 ~
  11.                                         theApp.m_szHelpFile,
    - N  O2 l8 |0 f; K" ?# L
  12.                                         HH_HELP_CONTEXT, ' C, o9 ]$ Q+ a! w: E& y7 |
  13.                                         IDH_WJH_0100000000);( O% e  o% b  G% p, s  ]

  14. ' H) O: O% g. y
  15.         return (hWnd != NULL);/ g. {" r# W  S# U1 X
  16.         return CMDIFrameWnd::OnHelpInfo(pHelpInfo);  }! u! G& a) f$ o: _$ [9 ?
  17. }
复制代码
$ a& c; W1 t9 {
  上述代码即响应用户F1按键,若当前显示界面设置了热点敏感帮助的页面ID时,程序将打开CHM帮助文档并跳转到ID对应的页面;若当前显示界面没有设置热点敏感帮助的页面ID,则显示软件帮助缺省的页面。IDH_WJH_0100000000为软件的缺省显示页面ID。
. J/ u* ^* S; K" a( |( {二、CHM帮助文档的制作要求 ! y! l+ y) F0 i" ^8 J  S( ]
3 N* \1 A2 \+ J. i
CHM帮助文档必须包含API文档信息,包含页面ID文件和ID对应页面名称申明二个文件,格式如下:
* v" K! [$ u( q/ V' {9 B% J/ T$ D+ [
CHMHelpID.h 页面ID文件格式:
4 P, g, D. N5 Z* K3 o; \( u#define IDH_WJH_0000000000  0; D9 |. q4 t4 L" T: a
#define IDH_WJH_0100000000  100000000- Q7 o* H4 Z2 \% |# v2 Z. h
#define IDH_WJH_0100100000  1001000000 N8 T& X. u: F, K1 D8 `# ^9 C
#define IDH_WJH_0100101000  100101000' A3 L! n4 b/ m; U) B+ A

) v' X- s1 R1 k9 ZAliasID.hID对应页面名称申明文件格式: IDH_WJH_0000000000 = 用户操作手册.Content\0000000000_操   作   手   册.Htm
& a$ I4 ]3 N8 F0 u6 h* a' GIDH_WJH_0100000000 = 用户操作手册.Content\0100000000_第一部分 系统介绍.Htm3 c2 {8 J* e) z' G
IDH_WJH_0100100000 = 用户操作手册.Content\0100100000_第一章 主要功能.Htm* d8 h- o; z" R$ Z; K7 G0 W
IDH_WJH_0100101000 = 用户操作手册.Content\0100101000_1、基本功能.Htm5 U1 m( d+ M4 E: Q! r4 L3 c$ q  l
IDH_WJH_0100102000 = 用户操作手册.Content\0100102000_2、高级应用功能.Htm  e5 m' \! }; S# _
3 N. n# j! P) N) X4 I6 p
  编制好这两文件后,包含在HHP工程文件中,用HTML WORK SHOP进行编译就可以了。 现在网上也有很多软件可以按照WORD文档的章节自动生成上述文件,极大的方便了用户制作软件热点敏感帮助。现推荐一款制作CHM的软件:Word2CHM帮助文档制作工具,此软件自动将WORD文档按照章节转换成CHM文档,并自动生成上述两个文件。您需要做的就是按照第一节介绍的方法在VC下加入代码编译软件即可实现热点敏感帮助。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|宁德市腾云网络科技有限公司 ( 闽ICP备2022007940号-5|闽公网安备 35092202000206号 )

GMT+8, 2026-5-2 08:56 , Processed in 0.019445 second(s), 15 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表