找回密码
 注册
查看: 6017|回复: 0

软件热点敏感帮助的实现

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

; a4 O6 j$ ^. U1 \一、软件中对CHM帮助文档的调用方法! _1 V3 i" ~# E

# p% |" |0 n( n& d, N1 `  VC中调用CHM帮助必须用API函数HtmlHelp(),此函数在LIB库函数内,为方便调用,我把它整体打包了,您要做的就是把它放到VC工程所在的目录,然后包含CHMHelp.h头文件即可。
, p. b3 |* P+ ~3 y' s系统包含文件如下:
8 J. V; n  e" X3 B' d* w$ q, j1 g2 E6 M) k" u, T) r
  1. #include "CHMHelp.h"
    % z" m# X0 y$ a7 I' C7 O) {
  2. ( ~) r3 ?( E$ i' Z1 j
  3. BOOL CDataDlg::OnInitDialog()
    6 J  p" [1 x$ z2 I
  4. {
    3 J' f0 t! ^/ k  B
  5.         CDialog::OnInitDialog();
      J: _* p+ T: s) r
  6.         SetWindowContextHelpId(IDH_WJH_0300702025);
    4 ~4 ^6 S2 S: @& o1 c* T
  7.         return TRUE;
      s# O) a4 a' {  K( H
  8. }
复制代码
8 L# `4 ?. J' p4 N
  上述代码中IDH_WJH_0300702025为在CHMHelpID.h中定义的敏感帮助的页面ID,设置了ID后在需要显示帮助的过程中(一般是用户按F1)增加如下代码:
  1. BOOL CMainFrame::OnHelpInfo(HELPINFO* pHelpInfo)
    6 j: D) Y, }8 P
  2. {8 Z0 {. @+ h; Z& T) ^. }" a3 g, D9 D% `- \
  3.         HWND hWnd;
    7 I) m1 |; l3 {! l4 e
  4.         if(pHelpInfo->dwContextId > 0) * {8 b% k/ ]: x6 d% s
  5.                         hWnd = HtmlHelp((HWND)pHelpInfo->hItemHandle,
    + l- k5 E$ g# Q) h3 A: K/ ?) f
  6.                                         theApp.m_szHelpFile, ) Z( u+ l) W' j7 s# A3 g
  7.                                         HH_HELP_CONTEXT, % }  `3 d, ~, z* P8 F3 l2 e  D) q% v
  8.                                         pHelpInfo->dwContextId);1 Q$ C1 W* S3 Y+ H" U- _6 C2 {& L
  9.         else
    / m( y' C( }6 o0 y- u1 P0 P+ v
  10.                         hWnd = HtmlHelp((HWND)pHelpInfo->hItemHandle, 2 a# g1 k& b" u# t
  11.                                         theApp.m_szHelpFile, ! N4 _/ _8 l" p3 C
  12.                                         HH_HELP_CONTEXT, ! P$ Y9 C* G  O5 k
  13.                                         IDH_WJH_0100000000);) t. u7 J! f- T3 D% A

  14. 7 d4 `% L) z' \) j: U
  15.         return (hWnd != NULL);( b1 k( F8 Q# m4 E9 O0 e' H% x% E
  16.         return CMDIFrameWnd::OnHelpInfo(pHelpInfo);
    ( ?( w" ^5 V2 ?1 W
  17. }
复制代码

1 v3 l; {% c# K; l& s1 E' w  上述代码即响应用户F1按键,若当前显示界面设置了热点敏感帮助的页面ID时,程序将打开CHM帮助文档并跳转到ID对应的页面;若当前显示界面没有设置热点敏感帮助的页面ID,则显示软件帮助缺省的页面。IDH_WJH_0100000000为软件的缺省显示页面ID。 # K0 o* i1 c9 n8 _
二、CHM帮助文档的制作要求 4 T" W7 B/ C: L# U1 E- Z
4 g5 c2 Z# Y; U$ n
CHM帮助文档必须包含API文档信息,包含页面ID文件和ID对应页面名称申明二个文件,格式如下: 8 j4 f% h  Z7 R5 u5 k* X7 E0 [
1 z" g+ ?2 G, N. y' @' O$ d: r
CHMHelpID.h 页面ID文件格式:: H1 X. g8 @# U8 }3 K+ b( S8 |
#define IDH_WJH_0000000000  0
$ \! k. |+ A9 D; R* u3 D% v7 O6 C#define IDH_WJH_0100000000  1000000001 ^( V! y0 T, @8 j2 J$ K% p7 `
#define IDH_WJH_0100100000  100100000
/ E0 T; n- Y6 e0 _+ {#define IDH_WJH_0100101000  100101000
- T# k) Z) S, ~9 s" j( u9 H" h- g! {) c
AliasID.hID对应页面名称申明文件格式: IDH_WJH_0000000000 = 用户操作手册.Content\0000000000_操   作   手   册.Htm/ ~( n/ `8 N. r( Y
IDH_WJH_0100000000 = 用户操作手册.Content\0100000000_第一部分 系统介绍.Htm; P  ]% `! W# z1 I( f* b$ h
IDH_WJH_0100100000 = 用户操作手册.Content\0100100000_第一章 主要功能.Htm
5 Z  ?. }( f) B8 ^) @* VIDH_WJH_0100101000 = 用户操作手册.Content\0100101000_1、基本功能.Htm
* U- g# W! K1 L) ~' H; x$ N' cIDH_WJH_0100102000 = 用户操作手册.Content\0100102000_2、高级应用功能.Htm
2 C8 [# ?: i2 G* u3 L; V
$ N; f  Q7 e7 ~: s3 d7 N  编制好这两文件后,包含在HHP工程文件中,用HTML WORK SHOP进行编译就可以了。 现在网上也有很多软件可以按照WORD文档的章节自动生成上述文件,极大的方便了用户制作软件热点敏感帮助。现推荐一款制作CHM的软件:Word2CHM帮助文档制作工具,此软件自动将WORD文档按照章节转换成CHM文档,并自动生成上述两个文件。您需要做的就是按照第一节介绍的方法在VC下加入代码编译软件即可实现热点敏感帮助。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-10-2 02:37 , Processed in 0.017857 second(s), 15 queries .

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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