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

软件热点敏感帮助的实现

[复制链接]
发表于 2006-12-27 12:48:36 | 显示全部楼层 |阅读模式
  很多人问起现在的CHM帮助文档如何作为软件的热点敏感帮助,网上搜索的资料也不多,可能是太简单了吧,呵呵!今天整理了一下,详细的介绍在VC开发的软件中对CHM帮助文档的调用方法以及CHM帮助文档的制作要求。
& I2 |1 S$ q0 K# F; m; a1 c! @' V0 n% r% T8 Z5 |2 s' U! T: q
一、软件中对CHM帮助文档的调用方法. U1 _% Z0 f  ~9 Y1 N9 v/ L( W
. q% m1 \+ f( |+ I+ E- ^3 n0 _
  VC中调用CHM帮助必须用API函数HtmlHelp(),此函数在LIB库函数内,为方便调用,我把它整体打包了,您要做的就是把它放到VC工程所在的目录,然后包含CHMHelp.h头文件即可。
- ^1 {0 E+ }( A, z系统包含文件如下: / o  y) N7 K0 P. {! O
2 J0 T: ?6 _# h# \
  1. #include "CHMHelp.h"; E$ l4 M4 v/ ^

  2. ) V; i4 j# P3 e5 X# b3 b' K
  3. BOOL CDataDlg::OnInitDialog() " Q; u1 r7 g& n5 B' ]8 A$ [
  4. {
    - J& |! l- B% t; Z: E
  5.         CDialog::OnInitDialog();
    & d" |0 D# N) v2 j
  6.         SetWindowContextHelpId(IDH_WJH_0300702025);: ~6 q7 F, m- q) e& Z4 O/ z
  7.         return TRUE;
    + |8 r# \: K6 w' k# `. B' \! U
  8. }
复制代码

/ _; {% W9 U. g9 Z$ \! H  上述代码中IDH_WJH_0300702025为在CHMHelpID.h中定义的敏感帮助的页面ID,设置了ID后在需要显示帮助的过程中(一般是用户按F1)增加如下代码:
  1. BOOL CMainFrame::OnHelpInfo(HELPINFO* pHelpInfo)
    ! h! v$ Z% v. o4 c$ x' U. F
  2. {% F3 `% z2 z" ]5 W. t
  3.         HWND hWnd;
    % |$ a. _; m  a/ I
  4.         if(pHelpInfo->dwContextId > 0) - U) l7 @+ Y- A' S" |
  5.                         hWnd = HtmlHelp((HWND)pHelpInfo->hItemHandle,
    + |. f" y9 l0 z9 t* }' j
  6.                                         theApp.m_szHelpFile, 4 x: j1 F" {: ~! r0 g: M
  7.                                         HH_HELP_CONTEXT,
    0 g0 R' D8 ]) [! g* [
  8.                                         pHelpInfo->dwContextId);( f0 t- `% [& d( Z; l/ n. T
  9.         else
    - _/ |0 g, p# U% W% z* V
  10.                         hWnd = HtmlHelp((HWND)pHelpInfo->hItemHandle,
    - X5 n, E: i/ \6 e
  11.                                         theApp.m_szHelpFile,
    3 q5 `2 E2 j. [9 P
  12.                                         HH_HELP_CONTEXT,
    : K3 z! a# ^" {
  13.                                         IDH_WJH_0100000000);
    & G4 L5 b( Y; h+ {

  14. 9 p  r. e9 N( ^+ X( h7 q
  15.         return (hWnd != NULL);
    2 i) J* M) P( Q) E9 p7 Z! q! t
  16.         return CMDIFrameWnd::OnHelpInfo(pHelpInfo);7 F- k! G5 s6 D( u, v9 N9 _
  17. }
复制代码
- b5 D0 s# c% N$ r2 R
  上述代码即响应用户F1按键,若当前显示界面设置了热点敏感帮助的页面ID时,程序将打开CHM帮助文档并跳转到ID对应的页面;若当前显示界面没有设置热点敏感帮助的页面ID,则显示软件帮助缺省的页面。IDH_WJH_0100000000为软件的缺省显示页面ID。 & X, v6 c" b* b8 p3 O
二、CHM帮助文档的制作要求
" r% o" J" s2 a+ a
. {" b; Y  `9 b$ [: ?7 D3 q2 CCHM帮助文档必须包含API文档信息,包含页面ID文件和ID对应页面名称申明二个文件,格式如下: ! C! b' w" D: N( m; x  e
, Z2 Y6 o5 p) c" E/ s" |3 z
CHMHelpID.h 页面ID文件格式:0 X* a; I" k! u; C
#define IDH_WJH_0000000000  0$ w* h% R' e9 `6 G2 `7 ~0 G
#define IDH_WJH_0100000000  100000000
, `# ~1 c9 v  y7 k* O6 k! k+ a1 @& a#define IDH_WJH_0100100000  1001000005 J! W4 ~2 \6 [) d( Q
#define IDH_WJH_0100101000  100101000
4 l( t& Z% H* X( F
4 @% d' ^% |6 |& \8 R9 C1 y( A7 t) aAliasID.hID对应页面名称申明文件格式: IDH_WJH_0000000000 = 用户操作手册.Content\0000000000_操   作   手   册.Htm
9 G* G) [. c3 t2 w! E7 I" zIDH_WJH_0100000000 = 用户操作手册.Content\0100000000_第一部分 系统介绍.Htm
" t5 ]! a' }' v3 KIDH_WJH_0100100000 = 用户操作手册.Content\0100100000_第一章 主要功能.Htm
) B3 E* f% x' Z  |! k0 |IDH_WJH_0100101000 = 用户操作手册.Content\0100101000_1、基本功能.Htm
, m: b" H+ V" N6 |1 wIDH_WJH_0100102000 = 用户操作手册.Content\0100102000_2、高级应用功能.Htm
2 _5 Z, @: T( ]# p8 i3 b4 C5 W0 K, @
  编制好这两文件后,包含在HHP工程文件中,用HTML WORK SHOP进行编译就可以了。 现在网上也有很多软件可以按照WORD文档的章节自动生成上述文件,极大的方便了用户制作软件热点敏感帮助。现推荐一款制作CHM的软件:Word2CHM帮助文档制作工具,此软件自动将WORD文档按照章节转换成CHM文档,并自动生成上述两个文件。您需要做的就是按照第一节介绍的方法在VC下加入代码编译软件即可实现热点敏感帮助。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-6-18 10:11 , Processed in 0.018774 second(s), 15 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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