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

软件热点敏感帮助的实现

[复制链接]
发表于 2006-12-27 12:48:36 | 显示全部楼层 |阅读模式
  很多人问起现在的CHM帮助文档如何作为软件的热点敏感帮助,网上搜索的资料也不多,可能是太简单了吧,呵呵!今天整理了一下,详细的介绍在VC开发的软件中对CHM帮助文档的调用方法以及CHM帮助文档的制作要求。: [/ y8 y1 [. X+ B8 |

3 ]8 Y/ Y1 z" o& S; L) z' Q2 t1 B一、软件中对CHM帮助文档的调用方法
1 R5 C* f6 d7 F+ g( u4 C3 i, Z6 A# [; F  Q
  VC中调用CHM帮助必须用API函数HtmlHelp(),此函数在LIB库函数内,为方便调用,我把它整体打包了,您要做的就是把它放到VC工程所在的目录,然后包含CHMHelp.h头文件即可。! D6 `8 u4 f1 C/ d) a
系统包含文件如下: 8 Z" N: \, H8 F) x3 Y1 r

$ `6 `: l$ n( L$ k& k; ~. p
  1. #include "CHMHelp.h", _1 P6 |- {) Q5 r1 w5 i' \1 s
  2. 9 n# ~+ H( R: m1 _: F7 ?" y
  3. BOOL CDataDlg::OnInitDialog()
    6 ~- C& Z, w# k% v! M
  4. {
    9 X- c$ P- G: l8 E6 [  N
  5.         CDialog::OnInitDialog();
    2 I/ C- p4 h1 V, C
  6.         SetWindowContextHelpId(IDH_WJH_0300702025);, s. ~8 Z, j' o
  7.         return TRUE;( d. f/ B% l& H6 i/ z8 S5 v  J
  8. }
复制代码
# R5 @9 h  S8 n4 b) Q2 W- o
  上述代码中IDH_WJH_0300702025为在CHMHelpID.h中定义的敏感帮助的页面ID,设置了ID后在需要显示帮助的过程中(一般是用户按F1)增加如下代码:
  1. BOOL CMainFrame::OnHelpInfo(HELPINFO* pHelpInfo) $ v' g' Q/ G- e) S
  2. {4 U4 {; L0 {& ^6 ?! l$ J, G
  3.         HWND hWnd;8 _, s7 ^$ V( {- c0 E& T0 V
  4.         if(pHelpInfo->dwContextId > 0) % c! L# O) S9 @$ n( I" n7 o  }7 F
  5.                         hWnd = HtmlHelp((HWND)pHelpInfo->hItemHandle, 3 U1 r9 [/ X' a% r
  6.                                         theApp.m_szHelpFile, 7 O) M: f/ [4 [7 Y% l! j
  7.                                         HH_HELP_CONTEXT, + Z! o7 P5 {# s6 G  I- V) P% _
  8.                                         pHelpInfo->dwContextId);
    - l8 ?7 R6 d* l) x% C- T9 Q7 g
  9.         else ( N, l! a" m5 h) w+ ^
  10.                         hWnd = HtmlHelp((HWND)pHelpInfo->hItemHandle,
    : ?$ g1 J4 K% w7 ~
  11.                                         theApp.m_szHelpFile,
    ( S- o, O3 s2 _6 R" c: [8 b
  12.                                         HH_HELP_CONTEXT, 6 F9 I: n  D, Q7 t1 c
  13.                                         IDH_WJH_0100000000);
    0 B1 D( d% w# Y
  14. ' N7 T3 v# X  f* J8 F
  15.         return (hWnd != NULL);& _% c/ A) X$ S8 J& [  @: E9 h
  16.         return CMDIFrameWnd::OnHelpInfo(pHelpInfo);7 W  l, k% e1 w
  17. }
复制代码
! M: s. o( _! I+ g7 }7 y
  上述代码即响应用户F1按键,若当前显示界面设置了热点敏感帮助的页面ID时,程序将打开CHM帮助文档并跳转到ID对应的页面;若当前显示界面没有设置热点敏感帮助的页面ID,则显示软件帮助缺省的页面。IDH_WJH_0100000000为软件的缺省显示页面ID。 - Z7 E- c+ {' V4 F' _% E: d
二、CHM帮助文档的制作要求
' u$ e: z+ N1 G1 N0 e
. L+ a$ h* X3 G, k: F( t3 BCHM帮助文档必须包含API文档信息,包含页面ID文件和ID对应页面名称申明二个文件,格式如下: 8 Q: K) @3 V' S2 \# h. v

: O2 X* w9 e: |8 c+ P- x* @$ t! \CHMHelpID.h 页面ID文件格式:
. B3 [0 m: Z% }#define IDH_WJH_0000000000  0
3 u# Q  N( v0 T& K1 _4 }#define IDH_WJH_0100000000  100000000& O* P0 X; K$ N: {
#define IDH_WJH_0100100000  100100000
$ a7 k* L. J* A% _+ H& r#define IDH_WJH_0100101000  100101000# P' q  z: K& b1 b* Y6 s  U

* A' s/ ~/ {, ~8 H  ~% }AliasID.hID对应页面名称申明文件格式: IDH_WJH_0000000000 = 用户操作手册.Content\0000000000_操   作   手   册.Htm
$ e: y% e2 Q2 b* YIDH_WJH_0100000000 = 用户操作手册.Content\0100000000_第一部分 系统介绍.Htm
' W% m+ u+ y+ \4 [IDH_WJH_0100100000 = 用户操作手册.Content\0100100000_第一章 主要功能.Htm: d! k$ O" e% p; a$ g) y  G" p" x* l
IDH_WJH_0100101000 = 用户操作手册.Content\0100101000_1、基本功能.Htm/ c4 r- |! K9 ~8 B# W+ W
IDH_WJH_0100102000 = 用户操作手册.Content\0100102000_2、高级应用功能.Htm- }  J0 @- h3 S. w3 t3 h
" z5 j! t6 m& k
  编制好这两文件后,包含在HHP工程文件中,用HTML WORK SHOP进行编译就可以了。 现在网上也有很多软件可以按照WORD文档的章节自动生成上述文件,极大的方便了用户制作软件热点敏感帮助。现推荐一款制作CHM的软件:Word2CHM帮助文档制作工具,此软件自动将WORD文档按照章节转换成CHM文档,并自动生成上述两个文件。您需要做的就是按照第一节介绍的方法在VC下加入代码编译软件即可实现热点敏感帮助。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-6-18 12:23 , Processed in 0.016861 second(s), 15 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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