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

软件热点敏感帮助的实现

[复制链接]
发表于 2006-12-27 12:48:36 | 显示全部楼层 |阅读模式
  很多人问起现在的CHM帮助文档如何作为软件的热点敏感帮助,网上搜索的资料也不多,可能是太简单了吧,呵呵!今天整理了一下,详细的介绍在VC开发的软件中对CHM帮助文档的调用方法以及CHM帮助文档的制作要求。
. O# x7 e$ W0 }  F/ \
' ?* W. y; S, R$ z; U2 I一、软件中对CHM帮助文档的调用方法
) _& h8 z) T$ u5 I8 Z$ a! ~) w# w' D) y& [
  VC中调用CHM帮助必须用API函数HtmlHelp(),此函数在LIB库函数内,为方便调用,我把它整体打包了,您要做的就是把它放到VC工程所在的目录,然后包含CHMHelp.h头文件即可。
$ i6 Z6 _; `1 |. ?系统包含文件如下: 1 w9 P7 L9 L$ N2 n
5 k# [" I# Q, M8 i+ k: W$ {% W& N
  1. #include "CHMHelp.h"
    6 Q$ m; b& s/ c; N# n
  2. " D+ b7 u; F: u3 n' k
  3. BOOL CDataDlg::OnInitDialog()
    9 ^* N0 [9 c5 ]1 J0 {8 r" r- [% P
  4. {
    8 o9 `" Y0 z, s! H* z! q- a% S4 Y
  5.         CDialog::OnInitDialog();
    ; d( y; L; M1 [3 b3 F2 g) L
  6.         SetWindowContextHelpId(IDH_WJH_0300702025);$ c* O! t' B# V# Y% `
  7.         return TRUE;
    ; \, r- p5 `9 h, ?4 X1 Z& I
  8. }
复制代码

: z7 R5 z* W& v5 F. w  R& G  上述代码中IDH_WJH_0300702025为在CHMHelpID.h中定义的敏感帮助的页面ID,设置了ID后在需要显示帮助的过程中(一般是用户按F1)增加如下代码:
  1. BOOL CMainFrame::OnHelpInfo(HELPINFO* pHelpInfo)
    # q, Z0 q( l. a- \9 q9 I
  2. {
    9 f1 M7 l# R) ~  `7 r$ e7 b
  3.         HWND hWnd;
    + P. M8 Y" |& K
  4.         if(pHelpInfo->dwContextId > 0)
    9 p; k) Y$ c% t9 R8 b
  5.                         hWnd = HtmlHelp((HWND)pHelpInfo->hItemHandle, # [- X, r% O# `8 w3 l* Y  o
  6.                                         theApp.m_szHelpFile,
    : A4 [! A5 p+ _' y7 {1 x
  7.                                         HH_HELP_CONTEXT, 0 }0 P* ~0 u9 y- h
  8.                                         pHelpInfo->dwContextId);
    , P& Q! z: `4 I% O5 Y  T2 `
  9.         else 7 n% M$ C" @& ~+ _" N% [3 t0 ?( M
  10.                         hWnd = HtmlHelp((HWND)pHelpInfo->hItemHandle,
    7 L/ x* K' q2 c8 o& j' V% |
  11.                                         theApp.m_szHelpFile,
    . W1 ?! A- |) ]4 C2 a# G) N* n
  12.                                         HH_HELP_CONTEXT,   j) {! s* Y4 U9 ]. b( c0 G$ B
  13.                                         IDH_WJH_0100000000);* h7 @6 o, R1 I" }. \: k6 y

  14. $ G6 ]1 b2 g9 A0 j- }, G
  15.         return (hWnd != NULL);$ S& _, y8 I( [8 t0 f
  16.         return CMDIFrameWnd::OnHelpInfo(pHelpInfo);
    , ~: [$ @1 K% K# T, X/ d
  17. }
复制代码

8 A6 @* F& @& Z+ w; j# G6 R0 x. w  上述代码即响应用户F1按键,若当前显示界面设置了热点敏感帮助的页面ID时,程序将打开CHM帮助文档并跳转到ID对应的页面;若当前显示界面没有设置热点敏感帮助的页面ID,则显示软件帮助缺省的页面。IDH_WJH_0100000000为软件的缺省显示页面ID。
: K! T# c3 r, K2 C  R% p二、CHM帮助文档的制作要求   S: ~4 u# e6 E( ~2 Y' ]$ h

- j% n- ~3 o) d4 Z* w$ K( QCHM帮助文档必须包含API文档信息,包含页面ID文件和ID对应页面名称申明二个文件,格式如下:
! {3 k  H, o5 e8 ]2 h) h: T' `: B5 n' O( Q& o" e
CHMHelpID.h 页面ID文件格式:* W# {% f( v+ R
#define IDH_WJH_0000000000  0
& y9 o/ T; q# H#define IDH_WJH_0100000000  1000000001 t. H8 ]+ r* Y' r8 L% t8 Y
#define IDH_WJH_0100100000  100100000. G! z9 a' H* v3 u8 ?( U, N; ^1 `
#define IDH_WJH_0100101000  100101000
% M) C  e- L- k; O/ l9 G& ?2 E+ O2 J
AliasID.hID对应页面名称申明文件格式: IDH_WJH_0000000000 = 用户操作手册.Content\0000000000_操   作   手   册.Htm
0 y: c6 k' B9 V' `. r4 k# PIDH_WJH_0100000000 = 用户操作手册.Content\0100000000_第一部分 系统介绍.Htm
8 z! x  E& ~: w$ t6 Z) K& _IDH_WJH_0100100000 = 用户操作手册.Content\0100100000_第一章 主要功能.Htm1 ~3 B4 N  m0 N$ f
IDH_WJH_0100101000 = 用户操作手册.Content\0100101000_1、基本功能.Htm( S) \; y- `5 H7 e) @
IDH_WJH_0100102000 = 用户操作手册.Content\0100102000_2、高级应用功能.Htm4 P8 M4 z) H  Y

- k  \# X6 j$ l9 Z; C: F  编制好这两文件后,包含在HHP工程文件中,用HTML WORK SHOP进行编译就可以了。 现在网上也有很多软件可以按照WORD文档的章节自动生成上述文件,极大的方便了用户制作软件热点敏感帮助。现推荐一款制作CHM的软件:Word2CHM帮助文档制作工具,此软件自动将WORD文档按照章节转换成CHM文档,并自动生成上述两个文件。您需要做的就是按照第一节介绍的方法在VC下加入代码编译软件即可实现热点敏感帮助。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2025-6-19 15:53 , Processed in 0.038723 second(s), 15 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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