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

软件热点敏感帮助的实现

[复制链接]
发表于 2006-12-27 12:48:36 | 显示全部楼层 |阅读模式
  很多人问起现在的CHM帮助文档如何作为软件的热点敏感帮助,网上搜索的资料也不多,可能是太简单了吧,呵呵!今天整理了一下,详细的介绍在VC开发的软件中对CHM帮助文档的调用方法以及CHM帮助文档的制作要求。  Z7 e7 F$ u+ ?
8 \" k7 Y8 l: ]
一、软件中对CHM帮助文档的调用方法
' L0 Q/ A) V3 O( I" }; K" c8 W5 I8 ^4 D
  VC中调用CHM帮助必须用API函数HtmlHelp(),此函数在LIB库函数内,为方便调用,我把它整体打包了,您要做的就是把它放到VC工程所在的目录,然后包含CHMHelp.h头文件即可。" a- n3 w& K2 Y$ o2 `0 g  F
系统包含文件如下: : N$ {; U4 e5 I# a: s! p$ K
! @$ |5 S6 B5 B: `! ~, {
  1. #include "CHMHelp.h"
    , \2 n* o7 N! e# A
  2. ' @2 @- E# I" Y: a# H
  3. BOOL CDataDlg::OnInitDialog() ) R' Y+ i5 e. _
  4. {- J( v+ y6 w' E; x  }9 {. B
  5.         CDialog::OnInitDialog();
    * `, g5 X2 _+ d& v( o" V
  6.         SetWindowContextHelpId(IDH_WJH_0300702025);6 D% w" ^( M. ^0 s. M2 ]1 P
  7.         return TRUE;7 s' |1 a% f% _9 s7 e7 o
  8. }
复制代码

/ g5 U1 v9 h7 w  上述代码中IDH_WJH_0300702025为在CHMHelpID.h中定义的敏感帮助的页面ID,设置了ID后在需要显示帮助的过程中(一般是用户按F1)增加如下代码:
  1. BOOL CMainFrame::OnHelpInfo(HELPINFO* pHelpInfo)
    2 Y! L) U% G8 \5 z, o' B  v7 {
  2. {! Z+ i- T# i( k& O# n8 k6 F8 ]" K
  3.         HWND hWnd;
    9 \. y$ h$ r! E+ V9 y# p
  4.         if(pHelpInfo->dwContextId > 0)
    - ~. v% l7 \& ]' g$ @9 k" Y
  5.                         hWnd = HtmlHelp((HWND)pHelpInfo->hItemHandle, 7 z9 {9 ^4 q, [: a) v/ L6 C
  6.                                         theApp.m_szHelpFile, 0 ]$ l; V2 S7 z
  7.                                         HH_HELP_CONTEXT,
    8 k* A& j3 @* k4 c4 R8 S4 s" k
  8.                                         pHelpInfo->dwContextId);8 n1 K) E, X* k4 p6 O) \% B+ Q+ i
  9.         else
    . P& h7 T8 ?& J' G3 b6 f" J3 u
  10.                         hWnd = HtmlHelp((HWND)pHelpInfo->hItemHandle,
    % ~9 w. ?9 x: m5 Q8 Y, r7 c
  11.                                         theApp.m_szHelpFile, 7 Z2 i! j+ o+ o- W+ T
  12.                                         HH_HELP_CONTEXT,
    9 ~) Z# a7 T% a% E, S" u
  13.                                         IDH_WJH_0100000000);( w3 |& Z+ R6 U: P/ O

  14. ' u' k# K/ ^8 k( W
  15.         return (hWnd != NULL);& t# ]1 A# P3 }/ V: _$ i* L- x
  16.         return CMDIFrameWnd::OnHelpInfo(pHelpInfo);
    9 s' T, ?7 E5 V5 [  o) }7 g& k( |
  17. }
复制代码

5 D  k, W' s/ O4 T; U3 r8 p  上述代码即响应用户F1按键,若当前显示界面设置了热点敏感帮助的页面ID时,程序将打开CHM帮助文档并跳转到ID对应的页面;若当前显示界面没有设置热点敏感帮助的页面ID,则显示软件帮助缺省的页面。IDH_WJH_0100000000为软件的缺省显示页面ID。
8 S2 Z7 y' ^% W: q二、CHM帮助文档的制作要求
7 a& i& U# l+ H; N" ~' V$ Y3 s: K% x+ k/ V, |+ q4 u# ~1 N$ h
CHM帮助文档必须包含API文档信息,包含页面ID文件和ID对应页面名称申明二个文件,格式如下: ! q% V' p# i/ O' W% F

/ L0 P  ~3 X& B' v& L. N$ r+ nCHMHelpID.h 页面ID文件格式:. q- a: r* A- o% }6 V/ x7 a
#define IDH_WJH_0000000000  0
. [+ m3 s" b. u* K2 U9 o#define IDH_WJH_0100000000  100000000
7 g, y' s* l3 {/ H. T3 }( k% D#define IDH_WJH_0100100000  1001000000 [( ]3 Z% R3 u( W  i8 X/ a, f
#define IDH_WJH_0100101000  100101000. w8 j4 ?2 F  L- m
% d9 t4 O) P8 g/ S
AliasID.hID对应页面名称申明文件格式: IDH_WJH_0000000000 = 用户操作手册.Content\0000000000_操   作   手   册.Htm
4 e& x9 l+ b6 t+ A7 W0 I1 m  VIDH_WJH_0100000000 = 用户操作手册.Content\0100000000_第一部分 系统介绍.Htm
* b$ u! I( l* y: V; ]0 iIDH_WJH_0100100000 = 用户操作手册.Content\0100100000_第一章 主要功能.Htm
; X! k- g, C  X9 `8 tIDH_WJH_0100101000 = 用户操作手册.Content\0100101000_1、基本功能.Htm) G6 n1 h1 x8 H$ G
IDH_WJH_0100102000 = 用户操作手册.Content\0100102000_2、高级应用功能.Htm
$ u$ P% ]0 R, Q# P3 l( R; o; r2 l6 A  ?+ E
  编制好这两文件后,包含在HHP工程文件中,用HTML WORK SHOP进行编译就可以了。 现在网上也有很多软件可以按照WORD文档的章节自动生成上述文件,极大的方便了用户制作软件热点敏感帮助。现推荐一款制作CHM的软件:Word2CHM帮助文档制作工具,此软件自动将WORD文档按照章节转换成CHM文档,并自动生成上述两个文件。您需要做的就是按照第一节介绍的方法在VC下加入代码编译软件即可实现热点敏感帮助。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2025-11-15 02:56 , Processed in 0.017228 second(s), 14 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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